我需要选择一种压缩算法来压缩一些数据。我不知道我要提前压缩的数据类型(可以把它想象成有点像 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/