Zlib-ng 2.3.1 is out today as the first stable release in the v2.3 series for this Zlib replacement that carries a variety of performance optimizations for speedier compression/decompression.
Zlib-ng 2.3.1 brings yet more performance optimizations and one of the big drivers to this new release is the Corba CRC32 code:
“The biggest addition is the Chorba CRC32 code, this is a major improvement to crc32 calculation speed for pre-PCLMUL (or equivalent) cpus. For now, we have 3 variants of Chorba: Generic, SSE2 and SSE4.1. We have also removed our detection and usage of the various aligned alloc functions, because we have to support an application-provided alloc function, and thus we have to check and fix buffer alignments anyway, so now we just use malloc() if none is provided.
The gzopen-related init code has been rewritten to clean up and unify the gzread and gzwrite behavior. Several malloc calls removed, places in the gz* code with malloc calls is down from 7 to 4 places (using gzopen will now only result in 2-3 calls to malloc total).
The reason for releasing 2.3.x instead of another 2.2 release is the introduction of Chorba CRC32, rewritten gzopen init code, the increased CMake version requirement, and the removal of NMake project files.”
The new zlib-ng release also adds an AVX-512 version of COMPARE256, various AVX2 improvements, and other CPU optimizations.
Per this discussion, the Zlib-ng 2.3 performance is looking quite appealing compared to Zlib and prior Zlib-ng releases:
Zlib-ng 2.3.1 can be downloaded from GitHub.
