algorithm - 我需要选择一种压缩算法

标签 algorithm language-agnostic compression

我需要选择一种压缩算法来压缩一些数据。我不知道我要提前压缩的数据类型(可以把它想象成有点像 WinRAR 程序)。

我听说过以下算法,但不知道应该使用哪一种。任何人都可以发布一份简短的利弊 list 吗?对于我的应用程序,首要任务是解压缩速度;第二要务是节省空间。压缩(不是解压)速度无关紧要。

  • 放气
  • 内爆
  • 普通霍夫曼
  • bzip2
  • lzma

最佳答案

我运行了一些基准测试来压缩一个包含高熵数据和文本混合的 .tar。这些是结果:

Name  - Compression rate* - Decompression Time
7zip  - 87.8%             - 0.703s
bzip2 - 80.3%             - 1.661s
gzip  - 72.9%             - 0.347s
lzo   - 70.0%             - 0.111s

*Higher is better

由此我得出结论,算法的压缩率取决于它的名称;按字母顺序排列的第一个将是具有最佳压缩率的那个,依此类推。

因此我决定将lzo重命名为1lzo。现在我有了有史以来最好的算法。


编辑:值得注意的是,不幸的是,lzo 是唯一一个拥有非常严格的许可 (GPL) 的:(

关于algorithm - 我需要选择一种压缩算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2397474/

相关文章:

mysql/统计 : Weighting an average to accentuate differences from the mean

algorithm - 线性时间解决方案

data-structures - 压缩相似但不相同的字符串列表的最佳方法是什么?

c - 在嵌入式处理器之间使用哪种压缩(已知字节分布)

algorithm - graph - 如何找到最小有向循环(最小总重量)?

C - 子集之和,需要更快的算法

algorithm - 如何找到一个和的增长顺序?

language-agnostic - 高阶函数的导数

design-patterns - 为这组对象寻找一个好的设计模式

compression - GZipStream无法检测到损坏的数据(甚至CRC32传递)?