gzip的最大压缩率是多少?


Answers:


91

这在很大程度上取决于要压缩的数据。快速测试包含1个全为零的1Gb文件,压缩后的大小约为120Kb,因此您的10Kb文件可能会扩展到约85Mb。

例如,如果数据的冗余性较低,则存档中包含的图像文件具有本机压缩的格式(gif,jpg,png,...),则gzip可能根本不添加进一步的压缩。对于像程序可执行文件这样的二进制文件,您可能会看到2:1的压缩,对于纯文本,HTML或其他3:1或4:1或更高的标记,这并不是没有可能。在某些情况下,您可能会看到10:1,但在充满人工符号的文件中看到的〜8700:1却不会在类似的人为情况下出现。

您可以检查解压缩gzip文件会产生多少数据,而无需实际将其未压缩内容写入磁盘,可以使用gunzip -c file.gz | wc --bytes-这将解压缩该文件但不存储结果,而是将它们传递到wc该文件,并在传递时计算字节数然后丢弃它们。如果压缩的内容是一个包含许多小文件的tar文件,您可能会发现要解压缩完整档案需要明显更多的磁盘空间,但是在大多数情况下,从管道gunzip输出通过返回的计数wc将与您所需的一样准确。


我已经看到HTML扩展到10倍(当然x3和x4是最常见的!)....对于那些+ 8x爆炸的数据,也许有很多冗余数据。我认为正在执行该操作的页面是php信息页面。
僵尸2010年

如的输出所示,重复标记phpinfo()压缩得很好。该输出中的技术信息比自然语言的平均块包含更多的直接重复,并且字母分布可能不太平滑,这可以帮助霍夫曼阶段获得更好的结果。
David Spillett 2010年

该答案没有考虑到故意恶意压缩的数据。一个人可以制作一个10KB左右的恶意zip文件,该文件可以扩展到4GB以上。
大卫·史瓦兹

但是,如此规模的Zip炸弹依赖于嵌套的档案,因此,作为人类解压缩文件的文件,您不久就会发现一些奇怪的东西。但是,它们可以用作针对自动扫描仪(在邮件服务等上)的有效DoS攻击。
David Spillett

1
@DavidSpillett:嵌套的拉链炸弹可扩展到PB级。那不是我在说的。看看甚至只是典型的拉链炸弹的单层。
David Schwartz 2013年

10

通常,您获得的压缩率不会超过95%(这样10kB压缩数据将解压缩到200kB),但是有些特制文件会以指数形式扩展。查找42.zip,它将解压缩为几PB的(无意义的)数据。


4
维基百科 42.zip是“以16组为一组包含5层嵌套的zip文件”,因此这不是解压缩的有效示例(仅适用于递归解压缩)。
Tgr

5
确实,42.zip尤其会对自动递归扫描zip文件的工具(例如病毒扫描程序)构成危险。
thomasrutter 2014年

4
那是zip,而不是gzip
BeniBela

8

https://stackoverflow.com/a/16794960/293815逐字引用

压缩格式的最大压缩率为1032:1。这是因为可以编码的最长运行时间是258个字节。每次运行至少需要两位(长度码一位,距离码一位),因此每一个压缩字节可编码4 * 258 = 1032个未压缩字节。

您可以通过gzip将gzip的结果压缩得到更多的压缩。通常,这不会提高压缩率,但长期运行可以改善压缩率。

顺便说一下,放气使用的LZ77方法比游程长度编码更通用。不仅使用长度,还使用长度/距离对。这允许从某个距离向后复制一个字符串,或者按照游程长度将一个字节复制一个距离,或者将三倍字节复制一个距离为三,等等。


6

任何压缩算法的压缩率均取决于所压缩数据的长度(该数据的长度除外)。

这是MaximumCompression的分析,
请看以下示例之一,

多文件压缩基准测试摘要

档案类型:多种档案类型(共46种)  
此测试中要压缩的文件数:510  
文件总大小(字节):316.355.757 
平均档案大小(位元组):620,305
最大档案(位元组):18,403,071
最小档案(位元组):3554

4

一个仅包含一个符号的巨大文件将很好地压缩。


4

文件中有10 MB的零,请使用gzip -9压缩为10217。因此最大比例看起来是1000倍左右。


1

您问题的答案取决于输入。为了让您了解如何完成压缩,请观看这​​六分钟的视频。

https://www.youtube.com/watch?v=ZdooBTdW5bM

您应该从中得到的是,压缩率取决于每个字符的频率,因此没有通用的最大压缩率,它取决于输入,对于英文文本来说约为65%。


1
欢迎来到超级用户!请在参考链接中引用答案的关键部分,因为如果链接页面发生更改,答案可能会失效。
DavidPostill

说“每个字符串的频率”而不是“每个字符的频率”会更准确
JoelFan
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.