gpt4 book ai didi

compression - GZIP压缩级别对解压有影响吗

转载 作者:行者123 更新时间:2023-12-03 10:38:23 25 4
gpt4 key购买 nike

我知道 GZIP 是 LZ77 和霍夫曼编码的组合,可以配置为 1-9 之间的级别,其中 1 表示最快压缩(较少压缩),9 表示最慢压缩方法(最佳压缩)。

我的问题是,是否选择级别只有是否会影响压缩过程,或者是否会根据用于压缩的级别在解压过程中产生额外费用?

我问是因为如果客户端支持,通常许多 Web 服务器会即时 GZIP 响应,例如Accept-Encoding: gzip .我很欣赏在动态执行此操作时,诸如 6 之类的级别可能是一般情况下的不错选择,因为它在速度和压缩之间提供了良好的平衡。

但是,如果我有一堆静态 Assets ,我可以提前 GZIP 一次 - 并且永远不需要再次执行此操作 - 使用最高但最慢的压缩级别会有什么缺点吗? IE。如果使用较低的压缩级别,客户端现在是否会产生额外的开销。

最佳答案

很好的问题,也是一个曝光不足的问题。您的直觉是可靠的 - 对于某些压缩算法,选择最大压缩级别可能需要解压缩器在解压缩时进行更多工作。

幸运的是,这对于 gzip 来说并非如此——客户端/浏览器没有额外的开销来解压缩更重度压缩的 gzip 文件(例如,选择 9 进行压缩而不是 6,假设大多数服务器使用标准的 zlib 代码库)。最好的方法是 减压率 ,就目前而言,以 MB/秒为单位,同时还监控内存和 CPU 等开销。简单地通过解压缩时间是不好的,因为在更高的压缩设置下文件更小,如果我们只使用秒表,我们就不会控制这个因素。

  • 一旦超过 6 级压缩内容,gzip 解压缩在解压缩时间和内存使用方面很快就会变得渐近。 Marcus Müller 链接的测试结果中 7、8 和 9 级的解压时间平坦线,尽管这是整秒给出的粗粒度数据。
  • 您还会在这些结果中注意到,对于 0.1 MiB 的所有压缩级别,解压缩的内存要求都是平坦的。这几乎令人难以置信,只是我们很少看到的软件卓越程度。马克·阿德勒 (Mark Adler) 和他的同事们应该为他们取得的成就获得大量支持。 gzip 是一种非常好的格式。

  • 内存使用可以解决您关于开销的问题。真的没有。就浏览器解压速度而言,级别 9 并没有太大的提高,但您不会失去任何东西。

    现在,查看 these test results多一点质感。您将看到级别 9 压缩内容的 gzip 解压缩速率比较低级别的内容略快(例如,级别 9 的解压缩速率比级别 6 快约 0.9%)。这很有趣,也很令人惊讶。我不希望利率上升。那只是一组测试结果——它可能不适用于其他场景(并且在任何情况下差异都非常小)。

    离别说明:预压缩静态文件是个好主意,但我不建议在级别 9 使用 gzip。通过使用 zopfli 或 libdeflate,您将获得比 g​​zip-9 更小的文件。 . Zopfli 是来自 Google 的成熟的 gzip 压缩器。 libdeflate 是新的,但非常出色。在我的测试中,它始终胜过 gzip-9,但仍然落后于 zopfli。您还可以使用 7-Zip 来创建 gzip 文件,它始终胜过 gzip-9。 (在上文中,gzip-9 是指使用 Apache 和 nginx 使用的规范 gzip 或 zlib 应用程序)。

    关于compression - GZIP压缩级别对解压有影响吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452429/

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