在xz,gzip和bzip2之间,哪种压缩算法最有效?


16

在xz,gzip和bzip2之间,当压缩相当大的tarball时,哪种压缩算法可以提供最小的文件大小和最快的速度?


“产生最小的文件大小”中的“最佳”?
Hennes

我不知道,我试图找到某种措辞来表达问题,以便我可以将测试添加为答案。我也不知道为什么这个东西被关闭了。@Karan
Nathan2055

1
哦,为什么关闭很容易。“最佳”是高度主观的,通常导致讨论或非建设性的答案。最佳压缩可以是最小的文件大小,最快的压缩,最小的压缩功率(例如在笔记本电脑上),压缩时对系统的影响最小(例如,仅使用一个内核的古老的单步执行程序),...或组合所有这些。
Hennes 2013年

有趣的文章是tomshardware.com/reviews/winrar-winzip-7-zip-magicrar,3436.html (基于Windows,重点是7zip,magicRAR,WinRAR和WinZip,而不是xz,gz或bz,但仍然很有趣并提供背景信息)。
Hennes 2013年

@Hennes-我整理了帖子,以准确替换我正在研究的内容。另外,感谢您提到的文章,我将在今天晚些时候阅读。
Nathan2055

Answers:


15

在压力测试中,我使用列出的三种格式压缩了464 MB的数据。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可能应该用在它的位置。


2
好的研究。您是否尝试过(至少)bzip2提供的各种压缩级别选项,例如bzip2 -9 <file>
亚伦·米勒

@AaronMiller-不,可以通过7-Zip使用它们吗?
Nathan2055

看起来是这样,尽管我不确定到什么程度:请参阅dotnetperls.com/7-zip-examples的 “开关m”部分。
亚伦·米勒

7
出于好奇,测试文件是什么样的数据?
GeminiDomino

请注意,不同的数据类型将导致不同的压缩大小。有关示例,请参见此处
Ploni

4

我在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来归档普通文件(如文档)。
对于归档系统文件,我使用文件-roller或tar -.z或-J选项以及--preserve来使用.tar.gz或.tar.xz以及--preserve来使用tar本地压缩并保留权限(也可以使用.tar.7z或.tar.rar可以使用)

更新:由于tar只保留普通权限而不是ACL,因此还可以使用纯.7z加上通过getfacl和sefacl手动进行的备份和还原权限以及ACL,这似乎是文件归档或系统文件备份的最佳选择,因为它将充满保留权限和ACL,具有校验和,完整性测试和加密功能,唯一的缺点是p7zip并非在任何地方都可用


学生,rar的选项是什么?为什么不尝试kolivas的lrzip,它对于虚拟磁盘映像应该很好用。
osgx

我正在从RAR迁移到Git和tarball,以获取文本文件,并从btrfs迁移至其他所有文件;我使用RAR的原因不是性能,我之所以使用它是因为诸如恢复记录,针对每个文件的单独文件级256位校验和以及...之类的功能。
Sudoer

3

我认为这篇文章提供了非常有趣的结果。

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.1秒@ 3.7

  • lz4:1.3秒@ 2.8

  • xz:32.2秒@ 5.43

  • xz -e:6m40 @ 7.063

  • xz:4分51秒@ 7.063

因此,如果您真的非常需要速度,lz4非常棒,并且仍然提供2.8的压缩比。

如果您迫切需要保留该字节,则在最大压缩级别(9)处的xz对于诸如内核源之类的文本文件将是最好的选择。但是,它很长,并且占用大量内存。

gzip是一个需要最大限度地减少对时间和空间的影响的好方法。这是我用来对生产环境进行日常日常备份的工具。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.