lz4、lz4_hc、blosc、snappy和fastlz之间的比较

22
我需要在一分钟内使用最佳压缩比将大小为500 MB的大文件进行压缩。我已经找到了适合我的以下算法:
  1. lz4
  2. lz4_hc
  3. snappy
  4. quicklz
  5. blosc
请问有人能够比较这些算法在速度和压缩比之间的差异吗?

你找到了lz4和fastlz的比较吗? - roalz
我也很感兴趣,似乎lz4比fastlz更高效,但我找不到证明这一事实的统计数据。 - rraallvv
4个回答

38
Yann Collet的lz4是无疑是IT技术领域中最好的压缩库之一,详情请参阅此处。 下图是示例图片:

enter image description here


1
您对嵌入式系统有什么建议?就空间和时间而言,哪种压缩和解压算法最有效? - Buddhika Chaturanga
1
通常人们不知道大窗口Brotli,而是使用小窗口Brotli进行大语料基准测试。Brotli的HTTP内容编码变体是小窗口,以允许在廉价移动电话上进行解压缩。其他压缩器(特别是LZMA和ZSTD)没有这种限制,应该与大窗口Brotli进行比较,而不是小窗口Brotli。通常情况下,使用大窗口Brotli可以看到10%的密度改进(在0.6%的LZMA内),同时保持高解压速度。 - Jyrki Alakuijala


2
大多数问题的答案通常是:“取决于情况” :)
其他答案给了你很好的指导,但需要考虑的另一件事是压缩和解压缩阶段的RAM使用情况,以及解压缩速度(以MB / s为单位)。
解压缩速度通常与压缩比成反比,因此您可能认为选择了完美的算法来节省带宽/磁盘存储空间,但是现在消耗该数据的任何东西都必须花费更多的时间、CPU周期和/或RAM来解压缩。而RAM使用量可能看起来微不足道,但也许下游系统是嵌入式/低电压系统?也许RAM很丰富,但CPU有限?所有这些都需要考虑到。
以下是对各种算法进行的一系列基准测试的示例,考虑了许多这些因素。

https://catchchallenger.first-world.info/wiki/Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO


这也是H265与H264的有趣之处之一。H264编码速度更快,但结果却更大。H265的结果较小,而解码器虽然更复杂,但实际运行速度相似,因为需要处理的数据明显减少了。 - Pyro

2
如果您只是追求高压缩密度,可以考虑使用LZMA和大窗口Brotli。这两种算法是目前公开的算法中具有最佳压缩密度的。Brotli在压缩时较慢,但解压速度比LZMA快5倍左右。"Original Answer"翻译成"最初的回答"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接