不同的zlib压缩级别的压缩比率

11

我正在考虑使用哪个级别的zlib压缩,我很好奇在zlib命令中指定的不同压缩级别的压缩率。 Zlib手册对于指定压缩级别有以下常量:

#define Z_NO_COMPRESSION         0
#define Z_BEST_SPEED             1
#define Z_BEST_COMPRESSION       9
#define Z_DEFAULT_COMPRESSION  (-1)

显然,数字越小意味着压缩和放气的延迟越低,但代价是生成的文件不够压缩;而数字越大则更有利于更好的压缩,但代价是延迟时间更长。
我的问题是,不同压缩等级可以期望什么压缩比?这个 zlib 网页说,在最大压缩情况下,“更典型的 zlib 压缩比约为 2:1 到 5:1”,但其他压缩因素的压缩比 / 范围也有吗?

1
这在很大程度上取决于您要压缩的数据。我的经验是,像JSON这样的数据通常可以通过压缩缩小到大约10%,而像H.264视频这样的数据则根本没有受益。 - mm759
2
我知道这取决于数据,但对于给定的数据,我想你仍然可以说“第7级压缩比第8级少x”,等等。换句话说,如果您可以为最大压缩级别提供一般范围,我很想知道是否也可以为其他压缩级别指定范围。 - Byte Lab
1个回答

17

没有独立于数据的答案来回答您的问题。您无法仅从各自的压缩级别预测压缩比或压缩比率。这些级别反映了压缩器在前32K的数据中查找匹配字符串的难度程度。仅此而已。


6
这就是“pngcrush”存在的主要原因。我所知道的找到PNG数据流的“最佳”压缩方式唯一的方法是使用多种组合的zlib压缩级别和策略、PNG过滤等进行暴力试验。 - Glenn Randers-Pehrson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接