web-dev-qa-db-ja.com

xz、gzip、bzip2のうち、どの圧縮アルゴリズムが最も効率的ですか?

Xz、gzip、およびbzip2の間で、かなり大きなtarballを圧縮するときに、最小のファイルサイズと最速の速度を提供する圧縮アルゴリズムはどれですか。

16
Nathan2055

私のストレステストでは、記載されている3つの形式を使用して464メガバイトのデータを圧縮しました。 Gzipは364 MBのファイルを返しました。 Bzip2は315 MBのファイルを返しました。 Xzは254 MBのファイルを返しました。簡単な速度テストも行いました:

圧縮:

1:Gzip

2:Xz

3:Bzip2(これは私のファンがかなり吹いていました、これは私のAthlon IIがかなり緊張していることを示しています)

減圧:

1:Xz

2:Gzip

3:Bzip2

これらのテストはすべて7-Zipの最新バージョンで行われたことに注意してください。

Xzは総合的な圧縮に最適な形式ですが、Gzipは速度が非常に優れています。 Bzip2は圧縮率が適切ですが、代わりにxzを使用する必要があります。

15
Nathan2055

1.1GB Linuxインストールvmdkイメージで独自のベンチマークを行いました。

rar    =260MB   comp= 85s   decomp= 5s
7z(p7z)=269MB   comp= 98s   decomp=15s
tar.xz =288MB   comp=400s   decomp=30s
tar.bz2=382MB   comp= 91s   decomp=70s
tar.gz =421MB   comp=181s   decomp= 5s

最大のすべての圧縮レベル、CPU Intel I7 3740QM、メモリ32GB 1600、ソースと宛先RAMディスク

ドキュメントのような通常のファイルをアーカイブするには、通常rarまたは7zを使用します。
システムファイルをアーカイブするために、私は.tar.gzまたは.tar.xzをfile-rollerまたはtarに-zまたは-Jオプションとともに使用し、--preserveを使用してtarでネイティブに圧縮し、権限を保持します(または.tar.7zまたは.tar.rarを使用できます)

更新:tarは通常のアクセス許可のみを保持し、ACLは保持しないため、プレーンな.7zに加えて、getfaclとsefaclを介して手動でバックアップと復元のアクセス許可とACLを使用できます。これは、ファイルのアーカイブまたはシステムファイルのバックアップの両方に最適です。権限とACLを保持し、チェックサム、整合性テスト、暗号化機能を備えていますが、p7Zipがどこでも利用できないという欠点があります

4

この記事は非常に興味深い結果を提供すると思います。

http://pokecraft.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO

最もサイズ効率の良い形式は、xzとlzmaで、どちらも-eパラメータが渡されます。

最速のアルゴリズムは、lzopとlz4で、1.3秒でgzipからそれほど遠くない圧縮レベルを生成できますが、gzipは8.1秒かかりました。圧縮率は、lz4では2.8、gzipでは3.7です。

ここに私がこの記事から抽出したいくつかの結果があります:

  • Gzip:8.1s @ 3.7

  • lz4:1.3秒@ 2.8

  • xz:32.2s @ 5.43

  • xz -e:6m40 @ 7.063

  • xz:4m51s @ 7.063

したがって、本当に必死にスピードを必要とする場合、lz4は素晴らしいものであり、2.8の圧縮率を提供します。

どうしてもバイトを節約する必要がある場合は、最大圧縮レベル(9)のxzが、カーネルソースなどのテキストファイルに最適です。ただし、非常に長く、大量のメモリを必要とします。

時間とスペースへの影響を最小限に抑える必要がある場合は、gzipが適しています。これは、運用環境の毎日の手動バックアップを作成するために使用するものです。

3
Johnride