Answers:
这在很大程度上取决于要压缩的数据。快速测试包含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
将与您所需的一样准确。
phpinfo()
压缩得很好。该输出中的技术信息比自然语言的平均块包含更多的直接重复,并且字母分布可能不太平滑,这可以帮助霍夫曼阶段获得更好的结果。
从https://stackoverflow.com/a/16794960/293815逐字引用
压缩格式的最大压缩率为1032:1。这是因为可以编码的最长运行时间是258个字节。每次运行至少需要两位(长度码一位,距离码一位),因此每一个压缩字节可编码4 * 258 = 1032个未压缩字节。
您可以通过gzip将gzip的结果压缩得到更多的压缩。通常,这不会提高压缩率,但长期运行可以改善压缩率。
顺便说一下,放气使用的LZ77方法比游程长度编码更通用。不仅使用长度,还使用长度/距离对。这允许从某个距离向后复制一个字符串,或者按照游程长度将一个字节复制一个距离,或者将三倍字节复制一个距离为三,等等。
任何压缩算法的压缩率均取决于所压缩数据的长度(该数据的长度除外)。
这是MaximumCompression的分析,
请看以下示例之一,
档案类型:多种档案类型(共46种) 此测试中要压缩的文件数:510 文件总大小(字节):316.355.757 平均档案大小(位元组):620,305 最大档案(位元组):18,403,071 最小档案(位元组):3554
您问题的答案取决于输入。为了让您了解如何完成压缩,请观看这六分钟的视频。
https://www.youtube.com/watch?v=ZdooBTdW5bM
您应该从中得到的是,压缩率取决于每个字符的频率,因此没有通用的最大压缩率,它取决于输入,对于英文文本来说约为65%。