【问题标题】:What is the optimal dictionary size for various compression algorithms?各种压缩算法的最佳字典大小是多少?
【发布时间】:2019-06-21 17:29:07
【问题描述】:

由于各种原因,我使用 LZMA2 来压缩许多不同大小的数据块。由于有许多块被并行处理,内存使用需要保持在一个合理的水平。给定 n 个字节的数据,使用的最佳字典大小是多少?典型的源块大小从 4k 到 4Mb 不等。

我推测字典大小大于要压缩的字节数没有意义吗?我还推测,如果数据要压缩到一半大小,那么字典大小将没有大于 n/2 字节的意义。

当然,这只是推测,非常感谢您了解为什么会出现这种情况!

干杯

约翰

【问题讨论】:

    标签: zip compression lzma


    【解决方案1】:

    可能没有绝对的最佳选择,因为这取决于您的具体需求。压缩算法(虽然我不了解 LZMA)通常允许您调整参数以在内存消耗、压缩速度和压缩比之间找到最佳折衷。您将需要使用这些参数,看看它们对您的实际工作量有什么影响。 最有可能的是,默认参数非常好,只有在您的要求不寻常时才需要进行调整,例如,如果您有硬内存或时间限制。

    【讨论】:

      【解决方案2】:

      大小为 m 的字典实际上只是未压缩数据的最后看到的字节的内存,上限为 m。因此,对于您的使用,m := n 将是最佳的,以独立方式充分利用 LZMA 压缩。

      如果您的块有相似之处,您可以通过使用压缩器和解压缩器都知道的大小为 t 的样本块训练 LZMA 来进一步提高压缩率(有关详细信息,请查看 Web 上的“训练压缩”)。在这种情况下,m := n + t 将是完美的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2013-07-27
        • 2018-10-17
        相关资源
        最近更新 更多