zlib の高性能フォークである zlib-ng の最初の安定版リリース

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 の使用により、圧縮/解凍パフォーマンスの大幅な向上が達成されました。

SSSE32、AVX3、Neon、および VSX 命令を使用して最適化された Adler2 チェックサム アルゴリズムの追加実装、PCLMULQDQ および ACLE に基づく CRC32-B 実装、改良されたハッシュ テーブル、SSE2、AVX2、Neon、および VSX に基づくスライド ハッシュ実装、比較演算に基づくSSE4.2 および AVX2 で。 この構成には、Intel と Cloudflare のフォークで使用される、パフォーマンスの向上を目的とした変更も含まれています。 バッファーを操作するプロセスが最適化されました。 CMake および NMake ビルド システムのサポートが追加されました。 テストには継続的統合システムが使用されます。

最適化に加えて、Zlib-ng には配布パッケージに蓄積されたパッチも含まれており、古いコンパイラやプラットフォームをサポートするために zlib で使用されている回避策からコードをクレンジングしますが、これにより、より効率的なメソッド (サポートに必要な制限など) の実装が妨げられます。 16 ビット システムおよび非 ANSI C コンパイラ)。 静的アナライザー、ファジング テスト システム、およびメモリを扱う際の問題を特定するツール (AddressSanitizer および MemorySanitizer) によって特定されたエラーを特定して修正するための作業が行われています。

出所: オープンネット.ru

コメントを追加します