Hi again!

Here's another improved version - this time it's about compression speed. I redesigned the search logic and beefed it up with more memory (eats 64M more memory). There's still room for further improvements, but it's a good start. I believe, that a compiler with better loop unrolling (aka Intel) will improve speed further, too.

Of course, string searching can be easily multithreaded - but I'm too lazy for this. Additionally, it would bloat the source, which is already ~20k.

So, here are some results. Note, that the compression is improved a tiny bit, too. Compression speed of highly compressible data isn't improved much - maybe 3-5%.

Code:

0.05 0.06
valley_cmb 7620k (16.1s) 7572k ( 8.8s) ~1.8x faster
SFC (tar'ed) 11198k (39.0s) 11186k (30.8s) ~1.3x faster
waveset (UCLC) 37342k (82.2s) 37339k (35.3s) ~2.3x faster
seamonkey (zipped) 42291k (83.3s) 42295k (21.9s) ~3.8x faster

Download RZM 0.06