web-dev-qa-db-ja.com

より高速なzlibの代替

より高度な最適化を備えたzlibのより高速なビルドがあるかどうか疑問に思います。

SSE命令またはIntelC++コンパイラ、または以前に特許を取得したトリック(gzip/zlib開発中に特許が重大な制限であったことを知っています)を使用して最適化できる場合は、誰かがわざわざ実装する必要がありますそれ?

特に、静的および動的コンテンツを提供する高性能Webサービスに直接影響を与える圧縮速度に興味があります。

5
BarsMonster

この質問が最初に尋ねられてから数年後、BarsMonsterが提案した最適化のタイプを使用して、より高速なx86_64zlibが表示されました。

Samtools(ハイスループットシーケンスデータと対話するための一連のツール)の作成者は、 zlib速度の比較 を作成しました。

zlib-ngはメインラインzlibにないzlib最適化を収集します しかし、メインラインzlibほど安定していない可能性があります。その課題追跡システムは、他の既知のzlibスピードアップへの参照としても有益です。

最近 「x86_64でinflate_fastを最大1.5倍高速化する」(一度に8バイトを埋めてコピーする) が行われましたが、メインラインのzlibには受け入れられませんでした。この作品を提供するパッチはまた、Chromiumに受け入れられているでこぼこの乗り物を持っています(これを参照してください Chromiumバグ および Chromiumレビュー )が、提出者が離れるために休憩を取ることを願っています遠くから見ると、複雑な状況で非常にゆっくりと進行しているように見えるので、充電してください...

5
Anon

もう1つの方法は、 miniz ライブラリ(パブリックドメイン、unlicense.org)です。これは、ほとんどのzlib APIを単一のCソースファイルに実装し、zlib互換の圧縮データストリームの読み取り/書き込みを行います。圧縮レベル1では、非常に高速なリアルタイムコンプレッサーを使用します(minilzoより少し遅いですが、圧縮率が高くなります)。

3
Rich Geldreich

再構築ではありませんが、zlibの2つの優れた代替手段はquicklzとfastlzです。どちらもgzip-1に比べて非常に高速ですが、圧縮率はそれほど高くありません。私のアプリケーションでは、サイズは10〜15%増加しましたが、圧縮速度は6倍であったため、非常に良いトレードオフがありました。

もちろん、どちらもzlibと互換性がないため、機能しない可能性があります。

2
Guy M