周囲には多くの圧縮アルゴリズムがありbzip2
、遅いアルゴリズムの1つです。プレーンgzip
は、通常、圧縮がそれほど悪くない場合に、著しく高速になる傾向があります。速度が最も重要な場合、lzop
私のお気に入りです。圧縮率は低いですが、非常に高速です。
私はいくつかの楽しみを持ち、それらの並列実装を含むいくつかのアルゴリズムを比較することにしました。入力ファイルはpg_dumpall
、ワークステーションでのコマンドの出力、1913 MBのSQLファイルです。ハードウェアは古いクアッドコアi5です。時間は、圧縮のみの実時間です。並列実装は、4つのコアすべてを使用するように設定されています。圧縮速度でソートされたテーブル。
Algorithm Compressed size Compression Decompression
lzop 398MB 20.8% 4.2s 455.6MB/s 3.1s 617.3MB/s
lz4 416MB 21.7% 4.5s 424.2MB/s 1.6s 1181.3MB/s
brotli (q0) 307MB 16.1% 7.3s 262.1MB/s 4.9s 390.5MB/s
brotli (q1) 234MB 12.2% 8.7s 220.0MB/s 4.9s 390.5MB/s
zstd 266MB 13.9% 11.9s 161.1MB/s 3.5s 539.5MB/s
pigz (x4) 232MB 12.1% 13.1s 146.1MB/s 4.2s 455.6MB/s
gzip 232MB 12.1% 39.1s 48.9MB/s 9.2s 208.0MB/s
lbzip2 (x4) 188MB 9.9% 42.0s 45.6MB/s 13.2s 144.9MB/s
pbzip2 (x4) 189MB 9.9% 117.5s 16.3MB/s 20.1s 95.2MB/s
bzip2 189MB 9.9% 273.4s 7.0MB/s 42.8s 44.7MB/s
pixz (x4) 132MB 6.9% 456.3s 4.2MB/s 7.9s 242.2MB/s
xz 132MB 6.9% 1027.8s 1.9MB/s 17.3s 110.6MB/s
brotli (q11) 141MB 7.4% 4979.2s 0.4MB/s 3.6s 531.6MB/s
サーバーの16コアが十分にアイドル状態で、すべてを圧縮に使用できるpbzip2
場合、おそらく非常に大幅な高速化が得られます。ただし、さらに高速が必要であり、最大20%のサイズのファイルを許容できgzip
ます。おそらく最善の方法です。
更新:brotli
結果を表に追加しました(TOOGAMの回答を参照)。brotli
私は3つの設定を追加したので、sの圧縮品質設定は、圧縮率と速度に非常に大きな影響を持っている(q0
、q1
およびq11
)。デフォルトはですがq11
、それは非常に遅く、さらに悪いですxz
。q1
でもとてもよさそうです。と同じ圧縮率ですがgzip
、4〜5倍高速です。
更新:lbzip2
(gmathtsコメントを参照)およびzstd
(ジョニーのコメント)をテーブルに追加し、圧縮速度でソートしました。優れた圧縮率の3倍の速度で圧縮することでlbzip2
、bzip2
ファミリーを元の状態に戻しpbzip2
ます!zstd
また、合理的に見えますがbrotli (q1)
、比率と速度の両方で打ち負かされています。
プレーンgzip
が最善の策であるという私の最初の結論は、ほとんどばかげているように見え始めています。ユビキタスのために、それはまだ打ち負かすことはできません;)