ZXC: Lossless compression built for ultra-fast decode
8 points by xyproto
8 points by xyproto
Some bits of this smell like AI writing to me, though my nose could be off.
How it compares to LZ4:
LZ4 is symmetric: it compresses about as fast as it decompresses. That suits logs and swap, but not data that is shipped.
[ZXC's] decoder's speed is paid for at compression time, and on this axis LZ4 and Zstandard are ahead.
So LZ4 is fast both ways, whereas ZXC is for going all-in on decompression speed. Eyeballing the graphs at the default setting, the tradeoff is that ZXC is 1.5-2x faster at decompression but 3x slower at compression.
Some bits of this smell like AI writing to me, though my nose could be off.
Claude is a top three contributor on the repo.
That's a pretty interesting tradeoff. Most of the lossless compression stuff I deal with goes the other way (relatively fast compression, slow decompression) because the use-case is compression-before-archival. There's a decent chance that the decompression cost won't ever be paid at all.
I hadn't really thought much about flipping that on its head but:
It is designed for data that is compressed once and read many times: firmware images, game assets, application bundles, and content delivered to many devices.
That's a really solid set of scenarios where shifting that balance can have a significant benefit for the end user. Neat!
How does it compare to LZO? It's what I use where decompression speed matters.
From the numbers on LZ4's GitHub README, it looks like LZ4's decompression speed is 5.7x faster than LZO's, and this new ZXC algorithm claims to be 1.5-2x faster than that. So naively extrapolating, I'd guess ZXC's decompression is around ten times as fast as LZO? Assuming similar settings, comparable benchmarks, yada yada.
Looks like LZ4 also has LZO beat for compression speed as well (1.2x). Wikipedia suggests that the way to think about those algorithms is that LZ4 and LZO are both in the "speed" category, but LZ4 is speedier whereas LZO is compression-ratio-er.
I looked through the git history and it very much is vibe-coded.
Would be good to see someone who's an expert in the field comment on it, because the claims are quite bold.