これまでのところ、tar
LZMA圧縮オプション(--lzma
または--xz
--lzip
最近、7-Zipが2021年にLinuxに移植されたことを確認しました(https://www.xda-developers.com/7-zip-linux-official-release/)。私は以前のP7Zipについて話していません(https://p7zip.sourceforge.net/)、これはもはやメンテナンスされていないようですが、公式7-Zipに関するものです。
そのため、テストした結果、同じ圧縮率に対して他のすべてのLinux LZMA実装よりもはるかに高速であることに非常に驚きました。
これは私のテストです(Debian 11)。各テスト間でRAMキャッシュを消去しました(sync && echo 3 > /proc/sys/vm/drop_caches
)。
私は、さまざまな種類のファイル、PDF、テキスト、オープンオフィスなどを含む163Mフォルダを作業しています。
$ du -hs TEST/
163M TEST/
7-Zipを使用すると、15秒で127Mファイルに圧縮できます。
$ time tar c -hp TEST/ | 7zz a -si test.tar.7z
real 0m14,565s
(...)
$ ll test.tar.7z
(...) 127M (...) test.tar.7z
他のすべてのLZMA実装では、同じアーカイブサイズに対して約5倍(約1'13 ")の時間がかかります!
$ time tar -chp --lzma -f test.tar.lzma TEST/
real 1m13,159s
$ time tar -chp --xz -f test.tar.xz TEST/
real 1m12,889s
$ time tar -chp --lzip -f test.tar.lz TEST/
real 1m12,525s
$ ll test.tar.{7z,lz*,xz}
(...) 127M (...) test.tar.7z
(...) 127M (...) test.tar.lz
(...) 127M (...) test.tar.lzma
(...) 127M (...) test.tar.xz
問題がないことを確認するためにtar
同じテストを実行しましたが、スイッチを使用するのではなく出力にtar
パイプしていました。結果は同じです。lzma|xz|lzip
--lzma
--xz
--lzip
したがって、デフォルトでは、7-ZipのLinuxバージョンは他のすべてのLZMA実装を非常に暗くします。私は7-ZipがLinuxの所有者と権限をサポートしていないと思いますが、ファイルを圧縮するときは問題ありません.tar
。
それでは、7-ZipのLinuxバージョンが他のLZMA実装よりもはるかに速い理由を知っている人はいますか?
答え1
私の質問に対する答えを見つけました。デフォルトではデフォルトで7zz
はマルチスレッドのように見えますが、xz
orの場合はそうではありませんlzip
。方程式にマルチスレッドを追加すると、7-Zipがまだ少し速い場合でも結果ははるかに近づきます。
$ time tar c -hp TEST/ | 7zz a -si test.tar.7z
real 0m17,986s
// free memory
$ time tar c -hp TEST/ | xz --threads=0 > test.tar.xz
real 0m22,920s
// free memory
$ sudo apt install plzip
$ time tar -chp --lzip -f test.tar.lz TEST/
real 0m20,134s
興味深いことに、インストールplzip
(並列lzip)はtar --lzip
それを自動的に使用できます(少なくともDebianでは/usr/bin/lzip
シンボリックリンクになるためです)。/usr/bin/lzip.plzip
[編集する]
また注意事項バージョン5.5.1以降(2024年1月)、未使用であり、xz
デフォルトはマルチスレッドです。
これで、マルチスレッドモードがデフォルトモードです。これにより圧縮速度が向上し、複数のスレッドで解凍できる .xz ファイルが生成されますが、メモリ使用量が増加し、圧縮が若干悪くなります。
答え2
7zzを使う手書きの編集、p7zip、xzはそうではありません。
さらに、XZのLZMAの実装は非常に古いです。過去7年間、Igor Pavlovは7-zipの速度を上げるために多数の変更を行いました。