我需要在一分钟内使用最佳压缩比将大小为500 MB的大文件进行压缩。我已经找到了适合我的以下算法: lz4 lz4_hc snappy quicklz blosc 请问有人能够比较这些算法在速度和压缩比之间的差异吗?
这可能会帮助您: (lz4 vs snappy)http://java-performance.info/performance-general-compression/ (lz4、snappy、lz4hc、blosc的基准测试)https://web.archive.org/web/20170706065303/http://blosc.org:80/synthetic-benchmarks.html (现在不再提供http://www.blosc.org/synthetic-benchmarks.html)
大多数问题的答案通常是:“取决于情况” :)其他答案给了你很好的指导,但需要考虑的另一件事是压缩和解压缩阶段的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
如果您只是追求高压缩密度,可以考虑使用LZMA和大窗口Brotli。这两种算法是目前公开的算法中具有最佳压缩密度的。Brotli在压缩时较慢,但解压速度比LZMA快5倍左右。"Original Answer"翻译成"最初的回答"。