【问题标题】:best compression algorithm with the following features具有以下特点的最佳压缩算法
【发布时间】:2008-12-22 18:14:46
【问题描述】:

具有以下特点的最佳压缩算法是什么:

  • 应该花费更少的时间来解压(可以花费更多的时间来压缩)
  • 应该能够压缩已排序的数据(大约 3,000,000 个字符串/整数的列表...)

请连同指标一起提出建议:压缩率、压缩和解压缩的算法复杂度(如果可能)?

【问题讨论】:

  • 在这个问题上几乎没有足够的限制。取决于操作系统、文件系统、被压缩的数据、CPU 速度与 i/o 速度。例如,当压缩许多小文件时,通常压缩比解压缩更快,因为文件系统在解压缩时必须创建许多文件条目。
  • 嘿,让我们放松一下!是的,操作系统和文件系统是相关的,但您仍然可以针对压缩/解压缩时间测量压缩方法。不要成为仇恨者;)
  • 嘿...所以第一个约束是,任何时间都可以用于压缩(0-无穷大),并且解压缩必须少于该时间。可以用三个月解压十个字节的算法来满足,只要压缩需要三个月零一秒...

标签: compression


【解决方案1】:

整个网站都致力于压缩基准测试here

【讨论】:

  • 哇很好的链接,那个网站太让人着迷了,既棒又可怕。
【解决方案2】:

好吧,如果您只是想要速度,那么标准 ZIP 压缩就可以了,而且它很可能已经集成到您的语言/框架中(例如:.NET 有它,Java 有它)。有时最通用的解决方案是最好的,ZIP 是一种非常成熟的格式,任何 ZIP 库和应用程序都可以与任何其他格式配合使用。

但如果你想要更好的压缩,我建议7-Zip,因为作者非常聪明,易于掌握并鼓励人们使用该格式。

为您提供压缩时间是不可能的,因为它与您的硬件直接相关。如果你想要一个基准,你必须自己做。

【讨论】:

    【解决方案3】:

    您不必担心减压时间。较高压缩级别所花费的时间主要是寻找最长的匹配模式。

    解压要么

    1) Writes the literal 
    2) for (backward position, length)=(m,n) pair, 
       goes back, in the output buffer, m bytes, 
       reads n bytes and 
       writes n bytes at the end of the buffer.
    

    所以解压时间与压缩级别无关。而且,根据我在通用解压虚拟机 (RFC3320) 方面的经验,我想任何解压算法都是如此。

    【讨论】:

      【解决方案4】:

      这是一个有趣的问题。 在字符串和整数的这种排序数据上,我希望difference coding compression approaches 在压缩率方面会胜过任何开箱即用的文本压缩方法LZ77 or LZ78。通用编码器不使用数据的特殊属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2010-09-21
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多