You probably know about our SynLZ
compression unit, in pascal and x86 asm, which is very fast for compression
with a good compression ratio, and proudly compete with LZ4 or Snappy.
It is used in our framework everywhere, e.g. for WebSockets communication, for
ECC encrypted file content, or to compress executable resources.
Two news to share:
1. I've added SynLZ support for the NextGen compiler, now available
in
a new unit of the "CrossPlatform" sub-folder.
Feeback is
welcome, since we don't use Delphi for iOS and Android with Delphi, and
prefer FPC for Linux!
2. I've also written a
new x64 asm optimized version of SynLZ, and profiled the existing
x86 asm to be even faster than previously.
For a 100MB text log file, SynLZ is faster than Snappy, and compresses
better (93% instead of 84%).
For other kind of files, Snappy is slightly faster at decompression, but SynLZ
compresses better, and most of the time faster.
When used on a REST server solution, as with mORMot, compression speed
does matter more than decompression.
For Win32:
Win32 Processing DragonFly-devpcm.log = 98.7 MB for 1 times
Snappy compress in 125.07ms, ratio=84%, 789.3 MB/s
Snappy uncompress in 70.35ms, 1.3 GB/s
SynLZ compress in 103.61ms, ratio=93%, 952.8 MB/s
SynLZ uncompress in 68.71ms, 1.4 GB/s
For Win64:
Win64 Processing DragonFly-devpcm.log = 98.7 MB for 1 times
Snappy compress in 107.13ms, ratio=84%, 921.5 MB/s
Snappy uncompress in 61.06ms, 1.5 GB/s
SynLZ compress in 97.25ms, ratio=93%, 1015.1 MB/s
SynLZ uncompress in 61.27ms, 1.5 GB/s
Of course, we didn't change the SynLZ binary format, so it is just
perfectly backward compatible with any existing program.
Anyway, from my point of view, the main benefit of SynLZ is that it
was designed in plain pascal, so it is clearly cross-platform and well
integrated with Delphi/FPC (no external .obj/.o/.dll required).
Feedback is welcome in our forum, as usual!