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

添加評論