比較したツール
比較した環境
- CPU: Intel Core i7 2600
- SSD: Crucial m4
- Memory: DDR3-1600 16GB
ベンチマーク内容
圧縮に使ったファイルは、数GBあるMySQL のダンプです。
cat original | command > original.compressed
という形でベンチマークしました。
下記の表は gzip の標準状態を 1 とした相対的な数値を示しています。 Software 欄の -1 や -9 は、コマンドに指定できる圧縮率です。 -1 が最低、 -9 が最高になっているコマンドが多いです。
並列に実行できるものに関してはすべて 8 スレッドで実行しています。
ベンチマーク結果
- time real
- 実際の経過時間
- time user
- CPU user 時間
- compression ratio
- 圧縮率の比。大きいほどファイルが大きい。
- compression ratio (single/parallel)
- 並列版について、シングルスレッドに対する圧縮率の比
- parallel overhead
- シングルスレッド版と比較した CPU user時間の比
Software | time real | time user | compression ratio | compression ratio (single/parallel) | parallel overhead |
---|---|---|---|---|---|
lzo | 0.22 | 0.19 | 1.55 | ||
lzo -9 | 4.91 | 4.93 | 1.25 | ||
gzip -1 | 0.50 | 0.49 | 1.15 | ||
gzip | 1.00 | 1.00 | 1.00 | ||
bzip2 -1 | 4.41 | 4.46 | 0.86 | ||
bzip2 | 5.87 | 5.94 | 0.79 | ||
xz -1 | 1.96 | 1.98 | 0.94 | ||
xz | 17.86 | 18.14 | 0.72 | ||
pigz -1 | 0.10 | 0.77 | 1.15 | 1.00 | 1.56 |
pigz | 0.20 | 1.55 | 1.00 | 1.00 | 1.55 |
pbzip2 -1 | 0.95 | 7.60 | 0.86 | 1.00 | 1.70 |
pbzip2 | 1.57 | 12.53 | 0.79 | 1.00 | 2.11 |
pxz -1 | 0.46 | 3.61 | 0.96 | 1.03 | 1.83 |
pxz | 4.11 | 28.35 | 0.73 | 1.01 | 1.56 |
棒グラフが相対的な経過時間、緑の点が相対的な圧縮率です。
xz が飛び出てわかりづらいので、xz以外のシングルスレッド系圧縮ソフトを並べました。
lzo が極めて高速ですがgzipに比べ1.5倍程度のサイズになりました。 lzo の最大圧縮はとても速度が遅いにもかかわらず gzip -1 より圧縮率が悪くなりました。
bzip2 は -1..-9 は厳密には圧縮率ではないので、他のソフトに比べて差が小さかったです。圧縮速度と圧縮率のバランスが良いように思います。
xz はさすがの遅さでした。ただ、 xz -1 や(今回は測っていませんが) xz -2 であれば、bzip2 より高速にもかかわらず肉薄する圧縮率を出すので、かなり優秀だと思います。
gzip は圧縮速度と圧縮率のバランスが取れています。
次にマルチスレッド系圧縮ソフトです。棒グラフが相対的な経過時間、緑の点が並列化のオーバーヘッド(シングルスレッド版に対するCPU user timeの比)、赤い点がシングルスレッド版に対する圧縮率の比です。
bzip2 は -1..-9 は厳密には圧縮率ではないので、他のソフトに比べて差が小さかったです。圧縮速度と圧縮率のバランスが良いように思います。
xz はさすがの遅さでした。ただ、 xz -1 や(今回は測っていませんが) xz -2 であれば、bzip2 より高速にもかかわらず肉薄する圧縮率を出すので、かなり優秀だと思います。
gzip は圧縮速度と圧縮率のバランスが取れています。
次にマルチスレッド系圧縮ソフトです。棒グラフが相対的な経過時間、緑の点が並列化のオーバーヘッド(シングルスレッド版に対するCPU user timeの比)、赤い点がシングルスレッド版に対する圧縮率の比です。
ご覧のように、シングルスレッド版に対して圧縮率はほとんど変わりません。シングルスレッド版に対する実行時間は bzip2 が若干高く2倍を超えましたが、その他は1.5倍~1.8倍程度でした。
まとめ
圧縮速度と圧縮率のバランスが取れているのは gzip で、並列版の性能も優秀でした。速度をある程度要求される環境下においても、 lzo には並列版がないので、CPUをたくさん使えるのであればこれで決まりな気がします。
xz は最高の圧縮率でした。 ただ、時間をかけて圧縮する用途にしても、さすがに時間がかかりすぎの気もします... 今回は測っていませんが、bzip2 より展開は早い(らしい)ので、ファイルを配布するなどの用途には向いているのでしょう。
bzip2 は圧縮率こそ xz に叶いませんが、実行速度とのバランスは優れていると思います。展開に時間が掛かるのがデメリットですが、一応保存しておく系のログファイルなどには使えるのではないでしょうか。
lzo の高圧縮モードは今回の測定だと出番がないように見えますが、展開が gzip に比べてメモリや時間が少なくて済むので、組込み用途では活躍しそうです。
補足
xz のマルチスレッド版には pixz というのもありますが、これは圧縮アルゴリズムにも少し手を加えており、 xz とファイルの互換性がありません。 環境によってはビルドが失敗するなど、これからに期待です。 ファイルの互換性はあるようです。また、私の環境でビルドが失敗したのは単にSDKが古いから説が浮上したので、今度追試します。
pxz は xz を単純にマルチスレッドにしたもので、圧縮が終わってからファイルを連結するので、メモリとディスクの使用量がかなり大きくなります。
今回は展開速度に関しては測っていませんので、展開を頻繁に行う場合はそちらも考慮する必要があります。
Lop hoc ke toan tong hop tai hai phong
返信削除Lop hoc ke toan tong hop tai bien hoa dong nai
Lop hoc ke toan tong hop tai vinh nghe an
Lop hoc ke toan tong hop tai hai duong
Lop hoc ke toan tong hop tai ninh binh
Lop hoc ke toan tong hop tai hung yen
Lop hoc ke toan tong hop tai phu tho
Lop hoc ke toan tong hop tai ha nam
Lop hoc ke toan tong hop tai vinh phuc
Lop hoc ke toan tong hop tai bac giang
Lop hoc ke toan tong hop tai thai nguyen
Lop hoc ke toan tong hop tai thai binh
Lop hoc ke toan tong hop tai nam dinh
Lop hoc ke toan tong hop tai thanh hoa
Lop hoc ke toan tong hop tai tphcm
Lop hoc ke toan tong hop tai bac ninh
Lop hoc ke toan tong hop tai ha dong
Lop hoc ke toan tong hop tai long bien
Lop hoc ke toan tong hop tai thanh xuan
Lop hoc ke toan tong hop tai cau giay
khoa hoc ke toan toan danh cho giam doc
dich vu thanh lap cong ty tron goi gia re
dich vu thanh lap cong ty gia re tai hai phong
dich vu giai the doanh nghiep tron goi
dich vu ke toan thue
dich vu bao cao tai chinh