題 在xz,gzip和bzip2之間,哪種壓縮算法最有效?


在xz,gzip和bzip2之間,哪種壓縮算法在壓縮相當大的tarball時提供最小的文件大小和最快的速度?


13
2018-04-10 18:42


起源


'最好',因為'導致最小的文件大小'? - Hennes
我不知道,我試圖找到一些問題,所以我可以添加我的測試作為答案。我也不知道為什麼這件事被關閉了。 @Karan - Nathan2055
哦,為什麼關閉它很容易。 “最好”是非常主觀的,通常會導致討論或非建設性的答案。最佳壓縮可以是最小文件大小,最快壓縮,用於壓縮的最小功率(例如在筆記本電腦上),在壓縮時對系統的影響最小(例如,僅使用其中一個核心的古老單線程序),......或組合所有這些。 - Hennes
一篇有趣的文章是 tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html  (基於Windows,專注於7zip,magicRAR,WinRAR和WinZip而不是xz,gz或bz,但仍然有趣並提供背景信息)。 - Hennes
@Hennes - 我清理了這個帖子,以便用我正在研究的東西取而代之。另外,感謝您提到的文章,我將在今天晚些時候閱讀。 - Nathan2055


答案:


在我的壓力測試中,我使用列出的三種格式壓縮了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應該可以用在它的位置。


11
2018-04-10 18:42



好的研究。您是否嘗試過(至少)bzip2提供的各種壓縮級別選項,例如: bzip2 -9 <file>? - Aaron Miller
@AaronMiller - 不,是否可以通過7-Zip使用它們? - Nathan2055
看起來如此,雖然我不確定到什麼程度:看 dotnetperls.com/7-zip-examples ,“切換m”部分。 - Aaron Miller
出於好奇,測試文件是什麼類型的數據? - GeminiDomino
請注意,不同的數據類型將導致不同的壓縮大小。看到 這裡 舉些例子。 - Ploni


我在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 by file-roller或tar使用-z或-J選項以及--preserve使用tar本地壓縮並保留權限(或者.tar.7z或.tar.rar可以用)

更新:因為tar只保留正常權限而不保留ACL,也可以使用普通.7z加上備份和恢復權限以及通過getfacl和sefacl手動恢復ACL,這似乎是文件歸檔或系統文件備份的最佳選擇,因為它將滿保留權限和ACL,具有校驗和,完整性測試和加密功能,唯一的缺點是p7zip無處不在


3
2017-09-18 04:58



學生,rar的選項是什麼?為什麼不嘗試 llzip by kolivas,它應該適用於虛擬磁盤映像。 - osgx
我正在從RAR遷移到Git,並為我的文本文件和btrfs轉換其他所有內容;我使用RAR的原因不是性能,我使用它是因為恢復記錄,每個文件的單獨文件級256位校驗和以及......等功能。 - Persian


我認為這篇文章提供了非常有趣的結果。

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.3s @ 2.8

  • xz:32.2s @ 5.43

  • xz -e:6m40 @ 7.063

  • xz:4m51s @ 7.063

因此,如果你真的絕對需要速度,lz4很棒,仍然提供2.8壓縮比。

如果你絕對需要節省字節,那麼在最大壓縮級別(9)的xz對於像內核源這樣的文本文件來說是最好的工作。但是,它很長並且佔用大量內存。

gzip是一個很好的,可以最大限度地減少對時間和空間的影響。這是我用來製作生產環境的手動每日備份的那個。


1
2017-08-07 17:16