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

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

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

什么因素影响开销大小?

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

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

注意:开销是在压缩版数据中添加了一些额外数据.

最佳答案 从
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字节开销

点赞