zlib-ng 的第一个稳定版本,zlib 的高性能分支

zlib-ng 2.0 库的版本已可用,并被标记为该项目的第一个稳定版本(随后是修正版本 2.0.1)。 Zlib-ng 在 API 级别与 zlib 兼容,但提供了额外的优化,由于接受更改的保守方法,这些优化未被官方 zlib 存储库接受。此外,还提出了基于 zlib 的现代化 API,但经过修改以简化移植。该项目代码是用 C 语言编写的,并在 Zlib 许可证下分发。

在 x86_64 系统上进行的测试表明,在执行压缩操作时,Zlib-ng 大约比 zlib 快 4 倍,比 gzip 快 2.1 倍。解压时,Zlib-ng比zlib快约2.4倍,比gzip快1.8倍。压缩/解压缩性能的显着提高主要归功于向量指令 SSE*、AVX2、VSX 和 Neon 的使用。

包括添加Adler32校验和算法的实现,使用SSSE3、AVX2、Neon和VSX指令进行优化,基于PCLMULQDQ和ACLE的CRC32-B实现,改进的哈希表,基于SSE2、AVX2、Neon和VSX的Slide哈希实现,基于比较操作在 SSE4.2 和 AVX2 上。该组合还包括旨在提高性能的更改,用于 Intel 和 Cloudflare 的分支。使用缓冲区的过程已得到优化。添加了对 CMake 和 NMake 构建系统的支持。持续集成系统用于测试。

除了优化之外,Zlib-ng 还包括在分发包中积累的补丁,并清理 zlib 中使用的变通方法中的代码,以支持较旧的编译器和平台,但这会阻止更有效方法的实现(例如,支持所需的限制) 16 位系统和非 ANSI C 编译器)。已经开展工作来识别和纠正静态分析器、模糊测试系统以及用于识别内存使用问题的工具(AddressSanitizer 和 MemorySanitizer)所识别的错误。

来源: opennet.ru

添加评论