【问题标题】:zlib lz77 sliding window and max match lengthzlib lz77 滑动窗口和最大匹配长度
【发布时间】:2015-02-28 22:34:53
【问题描述】:

我正在尝试查找两个参数(滑动窗口大小和最大匹配长度) 在LZ77算法中(源代码:http://www.zlib.net/)为了分析不同 压缩级别。一开始我发现zpipe.c中的CHUNK值是最大匹配长度参数,滑动窗口是deflate.c中函数deflateInit2中的参数windowBits 问题是不同压缩级别的压缩文件根据 无论参数是什么,这些参数都是相同的。

如果有人使用了这个源代码并且已经识别了代码中的这些参数, 这对我很有帮助。

谢谢!

【问题讨论】:

    标签: compression zlib sliding-window lz77


    【解决方案1】:

    默认情况下 zlib 使用 32K 滑动窗口。最大匹配长度为 258。

    一次放气的数据量(例如 zpipe.c 中的 CHUNK)对压缩没有任何影响。你可以一次输入一个字节的数据,你会得到相同的输出。

    【讨论】:

    • 感谢您的帮助。但我仍然有问题。我使用我定义的 2 个参数和一个二进制文件运行 zpipe(参数是滑动窗口和最大匹配长度 - 我对代码 deflate.c 等进行了一些更改以使其工作)。当我用这2个参数的不同值运行zpipe时,每次运行的2个压缩文件都是相同的,这意味着在放气过程中参数没有改变。你能找出它的原因是什么。再次感谢您的帮助
    • 不,我不知道是什么原因造成的。您可以查看您的数据以找出答案。滑动窗口和最大匹配长度分别确定匹配的最大距离和最大长度。如果它没有改变,那就意味着它从来没有找到那么远的距离或匹配那么长的距离。
    • 嗨,一般来说,代码中的哪些参数/变量(常量或非常量)可能会影响压缩率?以及它们在代码中的定义?提前致谢
    • 阅读deflateTune() 的文档,它提供对所有影响压缩的参数的直接访问。然后,您可以深入查看 deflate 代码,了解这些参数的具体作用。
    • 感谢您的回复。我很高兴得到关于 4 个参数的简要说明:good_length、max_lazy、nice_length、max_chain。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 2019-03-06
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多