gpt4 book ai didi

zip - 我们如何估计压缩文件的 “overhead”?

转载 作者:行者123 更新时间:2023-12-04 15:48:30 26 4
gpt4 key购买 nike

假设我们压缩例如 .txt 具有 的文件7 字节大小。压缩后转换为 .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字节开销
  • 关于zip - 我们如何估计压缩文件的 “overhead”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22346487/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com