我有一个500 mb的大文件,可在一分钟内压缩,压缩率最佳。我发现这些算法适合我的使用。
答案 0 :(得分:24)
Yann Collet的lz4,hands down。
答案 1 :(得分:4)
此迁移可以帮助您: (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上没有)
答案 2 :(得分:2)
像大多数问题一样,答案通常最终是:取决于:)
其他答案为您提供了很好的指示,但是要考虑的另一件事是压缩和解压缩阶段的RAM使用情况以及MB / s的解压缩速度。
解压缩速度通常与压缩率成反比,因此您可能会认为您选择了理想的算法来节省一些带宽/磁盘存储,但是无论下游消耗什么数据,现在都必须花费更多的时间,CPU周期和/或RAM解压缩。 RAM的使用似乎无关紧要,但也许下游系统是嵌入式/低压系统?也许RAM足够,但是CPU有限?所有这些事情都需要考虑在内。
以下是在各种算法上进行的一组基准测试的示例,其中考虑了许多这些注意事项:
答案 3 :(得分:0)
如果仅是为了实现高压缩密度,则需要查看LZMA和大窗口Brotli。从广泛使用的开源算法中,这两种算法可提供最佳的压缩密度。 Brotli的压缩速度较慢,但解压缩的速度约为5倍。