【问题标题】:Are there any asymmetric compression algorithms which are fast compression / slow decompression?是否有任何非对称压缩算法是快速压缩/慢速解压缩?
【发布时间】:2013-05-16 04:15:52
【问题描述】:

我查看了许多“快速压缩”库,但它们都具有快速解压缩而不是快速压缩的特点。

我正在开发一个快速压缩比快速解压缩更受重视的系统。 有没有这样的算法?如果有,是否有实现它的 C 库?

更新:我正在压缩物理内存页面,我要求压缩吞吐量等于或快于直接复制。我正在使用一种检测算法来发现具有低熵的页面,以保证我尝试压缩的页面实际上是可压缩的。

【问题讨论】:

  • 压缩数据的行为本质上是困难的。它是关于模式检测的,除非您选择非常简单且比率较差的压缩,否则它的计算成本往往很高。也许你可以详细说明一下。你在压缩什么样的数据?您的吞吐量要求是什么?您对压缩比有何期望?

标签: c performance compression


【解决方案1】:

嗯,你可以随心所欲地做任何事情,但我不知道有什么算法天生压缩速度快而解压缩速度慢。

如果你想象有某种交易可以让压缩更快,如果你允许解压更慢,那么不,没有。

lz4 提供非常快速的压缩,甚至更快的解压缩。

【讨论】:

    【解决方案2】:

    Large Text Compression Benchmark 有大量关于压缩性能的数据,包括一些图表。虽然它专注于高压缩,但它应该让您很好地了解速度、内存使用和压缩比之间的权衡。压缩器大致分为两类:需要相似时间来压缩和解压缩的对称压缩器(这些压缩器也往往是高压缩率的慢压缩器),以及解压缩比压缩更快的非对称压缩器(这些更受欢迎)。在任何情况下,我都知道压缩比解压缩快得多。

    据我所知,使用最广泛的“快速”压缩器是snappyLZO。 @MarkAdler 提到了lz4,看起来也不错。

    【讨论】:

    • lz4 的压缩比 snappy 和 LZO 好一点,比 LZO 快一点,比 snappy 压缩快很多,而且在解压缩时比这两者都快。
    【解决方案3】:

    你试过density吗?

    这是一个压缩速度极快(比 lz4 还快)的 BSD 库。 解压也超级快,如following benchmark中所说。

    为了测试,有一个名为“sharc”的开源命令行客户端,也可以在 github 上找到。

    【讨论】:

      【解决方案4】:

      您能做的最好的事情就是查看压缩基准。他们至少报告了两个数字:压缩大小和压缩速度。在您的情况下,解压缩速度并不重要,因此只需查看压缩速度。

      一些算法将形成Pareto Frontier。选择其中之一。

      【讨论】:

        猜你喜欢
        • 2019-01-22
        • 2010-10-27
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多