Zlib-ng 2.3.1 今天发布,作为 Zlib 替代品 v2.3 系列的第一个稳定版本,它包含多种性能优化,以实现更快的压缩/解压缩。
Zlib-ng 2.3.1 带来了更多的性能优化,而推动这个新版本发布的一个重要因素是 Corba CRC32 代码:
最大的新增功能是 Chorba CRC32 代码,这是对预 PCLMUL(或等效)CPU 的 crc32 计算速度的重大改进。目前,我们有 3 种 Chorba 变体:通用、SSE2 和 SSE4.1。我们还移除了对各种对齐分配函数的检测和使用,因为我们必须支持应用程序提供的分配函数,因此我们必须检查和修复缓冲区对齐,所以现在如果没有提供,我们就使用 malloc()。
与 gzopen 相关的初始化代码已被重写,以清理和统一 gzread 和 gzwrite 的行为。移除了几个 malloc 调用,gz*代码中包含 malloc 调用的位置从 7 个减少到 4 个(使用 gzopen 现在总共只会导致 2-3 次 malloc 调用)。
之所以发布 2.3.x 版本而不是另一个 2.2 版本,是因为引入了 Chorba CRC32、重写的 gzopen 初始化代码、提高了 CMake 版本要求以及移除了 NMake 项目文件。
新的 zlib-ng 版本还添加了 AVX-512 版本的 COMPARE256、各种 AVX2 改进以及其他 CPU 优化。
根据这次讨论,Zlib-ng 2.3 的性能相比 Zlib 和之前的 Zlib-ng 版本显得相当吸引人:


Zlib-ng 2.3.1 可以从 GitHub 下载。
转自 Zlib-ng 2.3.1 Released With More CPU Performance Optimizations – Phoronix
Linuxeden开源社区