我们如何估计压缩文件的“开销”?

时间:2014-03-12 09:00:21

标签: zip compression overhead overhead-minimization

假设我们压缩了例如字节大小的 .txt 文件。压缩并转换为 .zip 文件后,大小将 190 字节。

有没有办法估算或计算“开销”的大致尺寸?

什么因素会影响间接费用?

Zlib计算开销:他们说:“......只有扩展是每16 KB块5个字节的开销(约0.03%),加上整个6个字节的一次性开销流“。

我只是把这个网站告诉我们可以估算“开销”大小。

注意开销是在压缩版数据中添加的一些额外数据。

1 个答案:

答案 0 :(得分:2)

来自the ZIP format ..

假设只有一个中心目录和没有注释和没有额外字段,则开销应类似于以下内容。 (如果添加了任何额外的元数据,开销只会增加。)

  • 每个文件(本地文件头) - 30 + len(文件名)
  • 每个文件(数据描述符) - 12(至16)
  • 每个文件(中央目录标题) - 46 + len(文件名)
  • 每档案(EOCD) - 22

所以开销,其中afn是所有文件名的平均长度,f是文件的数量:

  f * ((30 + afn) + 12 + (46 * afn)) + 22
= f * (88 + 2 * afn) + 22

这当然使ZIP成为非常差的选择非常微小的压缩数据,其中不需要(文件)结构或元数据 - zlib,另一方面,一个非常薄的 Deflate包装器。

对于小型有效负载,较差的Deflate实现也可能导致更大的压缩"大小,例如臭名昭​​着的.NET实现..


示例:

  • 存储1个文件,名称为" hello world note.txt" (len = 20),

    = 1 * (88 + 2 * 20) + 22 = 150字节开销

  • 存储100个文件,平均名称为14个字母,

    = 100 * (88 + 2 * 14) + 22 = 11622字节开销