So it seems the best way of finding out about lisp packages is releasing a similar package yourself ;): Right on the foot of releasing Deflate, I get to notice Chipz, a similar, but more capable package by Nathan Froyd, the release of which in early 2008 seems to have slipped my notice completely. So anyone who is interested in RFC 1951 Deflate (or even BZIP2 decompression), please have a look at Chipz as well, which is likely to better fit your needs!
Since I can’t let any benchmarking opportunity go to waste, here’s an overview of performance when decompressing a 18.6MB gzip-compressed file into 81.9 MB uncompressed form with Deflate 1.0.0, Chipz 0.7.3 and inflate.cl from Franz, version 2.6, on various CL implementations, and gzip 1.3.10:
Common Lisp Implementation | Library / Program | |||||
---|---|---|---|---|---|---|
Deflate 1.0.0 | Chipz 0.7.3 | inflate.cl 2.6 (w/o CRC32) |
Deflate 1.0.0 w/o CRC32 |
Chipz 0.7.3 w/o CRC32 |
gzip 1.3.10 | |
SBCL 1.0.29 x86 (32bit) | 7.42s | 7.65s | 17.85s | 6.56s | 6.99s | 5.03s |
SBCL 1.0.29 x64 (64bit) | 6.99s | 6.41s | 18.35s | 6.37s | 5.92s | |
LispWorks 5.1.2 Prof. 32bit | 34.78s | 197.50s | 32.68s | 34.02s | 56.79s | |
Clozure CL 1.3 32bit | 44.89s | 48.77s | 13.53s | 16.07s | 17.71s | |
Clozure CL 1.3 64bit | 18.06s | 16.87s | 13.67s | 16.87s | 15.40s |
Since CRC-32 calculations can overshadow deflate performance itself on some implementations, and since inflate.cl does not perform CRC-32 checksum calculations at all, the columns showing Deflate and Chipz without CRC-32 calculations might be more indicative of actual deflate performance.
Note that this was all done on a MacBook Air 1.8GHz Core2 Duo under Mac OS X 10.5.7, timing was done as an average of 3 runs each.
What can be learned from the results is that 64bit implementations with their bigger fixnum range help quite a bit in performing 32bit algorithms (like CRC-32) well even without extensive/effective declaration fine-tuning or special 32bit arithmetics operators.