Message from discussion Common Lisp wish list item
Subject: Re: Common Lisp wish list item
References: <firstname.lastname@example.org> <email@example.com> <firstname.lastname@example.org>
From: Alain Picard <apicard+die-spammer-...@optushome.com.au>
Date: 21 Aug 2002 19:30:33 +1000
Organization: Picard's Enterprise
User-Agent: Gnus/5.090003 (Oort Gnus v0.03) Emacs/20.7
Content-Type: text/plain; charset=us-ascii
X-Trace: 1029922277 28866 22.214.171.124
I recently had the fun (!) of discovering how hard it can
be to really optimize CL code while implementing BLOWFISH.
What an eye opener!
Duane Rettig <du...@franz.com> writes:
> But what happens then when the "naturally 32 bit" algorithms start
> becoming "naturally 64 bit"?
Which they will --- Bruce Schneier states that making blowfish run
fast on "typical 32 bit hardware"(*) was an _explicit_ design goal.
So we'll be back to square one.
For the record, the CMUCL hacks (to unbox 32bit modulo adds and xors)
make blowfish run 120 times faster than the bignum calls in Lispworks 4.2.
Even then, I'm surely missing something basic, because Schneier says
blowfish should run at 8 Mb/s on a 150Mhz pentium (18 clock
cycles/byte), and mine runs at 3 Mb/s on a 433Mhz Celeron.
I've read that in Lisp you can write slow code fast, and then
have to work for the speed. I didn't realize just _how_ _hard_,
(*) Interestingly, Schneier conjectures that blowfish is _probably_ strong
using 16 bit blocks (which _would_ fit into fixnums of essentially
all current lisps). I ran out of enthusiasm and didn't write that
code to benchmark it.