Subject: Re: Performance tuning
From: Erik Naggum <>
Date: 2000/12/04
Newsgroups: comp.lang.lisp
Message-ID: <>

* Greg Menke <>
| For practice I just implemented a md5 hashing routine, it works but is
| quite slow.

  To make MD5 perform reasonably fast, you need access to machine
  integers and rotate instructions.  MD5 looks like it was designed by
  someone who wrote in assembler on a machine with more registers than
  your average Intel, and it hurts to make that perform in Common Lisp.
  I decided to split the integers in half to get them within fixnum
  range (the Emacs Lisp implementation has made a similar decision), but
  also to write directly into a preallocated bignum rather than an array
  because some critical operations were faster that way.  (An annoying
  "feature" with MD5 is that its operations are all within 32-bit words,
  so there's very little to be gained from bignum support.)

  "When you are having a bad day and it seems like everybody is trying
   to piss you off, remember that it takes 42 muscles to produce a
   frown, but only 4 muscles to work the trigger of a good sniper rifle."
								-- Unknown