假设我们压缩例如 .txt 具有 的文件7 字节大小。压缩后转换为 .zip 文件,大小为 190 字节。
有没有办法估计或计算“开销”的大致大小?
什么因素影响开销大小?
Zlib计算开销:他们说:“……只有扩展是每 16 KB 块 5 个字节的开销(大约 0.03%),加上整个流的一次性开销 6 个字节。”
我只是把这个网站告诉它可以估计“开销”的大小。
备注 :开销是添加到数据压缩版本中的一些额外数据。
最佳答案
来自 the ZIP format ..
假设只有一个中心目录,没有注释,也没有额外的字段,开销应该类似于下面这样。 (只有添加了任何额外的元数据,开销才会增加。)
所以开销,其中
afn
是所有文件名的平均长度,f
是文件数: f * ((30 + afn) + 12 + (46 * afn)) + 22
= f * (88 + 2 * afn) + 22
对于不需要(文件)结构或元数据的非常小的压缩数据,这当然使 ZIP 成为一个非常糟糕的选择 - zlib另一方面,是一个非常薄的 Deflate 包装器。
对于小负载,一个糟糕的 Deflate 实现也可能导致一个明显更大的“压缩”大小,例如臭名昭著的 .NET 实现..
例子:
= 1 * (88 + 2 * 20) + 22 = 150
字节开销 = 100 * (88 + 2 * 14) + 22 = 11622
字节开销 关于zip - 我们如何估计压缩文件的 “overhead”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346487/