压缩算法lzma2,zstd,rar,brotli,lz4,lizardv1对比推荐
测试数据与测试脚本见文末链接。
可修复性
文件头损坏Lzip有修复工具,视情况保证文件有效性,可以强行解压。三重校验。winRAR自带修复工具,视情况保证文件有效性。双重校验。zip有修复工具,影响较小。7z,xz暂无修复工具,可以自行修改文件头修复。
压缩流损坏zip非固实,rar默认非固实,丢失损坏文件,其余直接解压。固实包括rar,损失所有文件。不要对rar的可修复性抱有不切实际的期望。Lzip可用Lziprecover提取残余文件,对同一文件多份不同损坏的备份可以对比合成修复。7z-LZMA2标准压缩默认分块固实大小4G,丢失整个分块。非固实只损失坏文件,照常解压。
推荐
考虑兼容:
考虑兼容性,zip(Deflate)理论上应该是最好的,windows资源管理器就能解压。rar,7z(lzma)一般压缩软件也都支持。fast lzma2 压缩需要7z增强版,解压标准7z就支持。cpu核数越多,fast lzma2越强。
极速:zip(Deflate)Level 3 就有不错的压缩率。L5压缩耗时翻倍,解压耗时相近,压缩性能提升5%。L7,L9逐级压缩耗时翻倍,压缩性能提升0.5%~1%。相对RAR,LZMA,大量零散小文件效率反而更高。
标准:rar固实 Level4 1MB~8MB,视整个压缩包大小选字典大小。两三百M可以选1MB。五六百兆左右2MB,再大就可以选4~8MB。相对Deflate L3解压耗时相近,压缩耗时翻倍不止,压缩性能提升10%~30%。非固实参见后文。
fast lzma2 4m字典相对rar L4 2MB字典 提升2%的压缩性能,压缩速度略快,解压速度快很多。
极限:LZMA2 L5,L7,L9逐级增加20%的压缩耗时,10%的解压耗时,提升7%左右的压缩性能。
rar Level5 固实16MB~64MB字典相对LZMA2 效率更高,压缩性能差5%。更大字典,解压效率更高,压缩效率反而不如LZMA2。
Fast Lzma2压缩需要7zip-zstd软件,解压可以用标准7zip软件,主要优势是大字典的内存占用小很多,继而可以开很多线程。基本可以达到甚至超出RAR的效率,压缩性能强一些。
不考虑兼容:
极速:Brotli Level3:与仅存储速度相近,压缩率相当不错。
标准:Zstd Level 11:压缩耗时相对仅存储2~4倍,解压耗时相近,压缩性能相对Brotli Level3提升10%左右。
标准:LZMA Level 5~9,大量零散小文件,LZMA Level5解压耗时与Zstd L11相近,压缩耗时大约是3倍,压缩性能提升20%左右。L7,L9逐级增加20%的压缩耗时,10%的解压耗时,提升7%左右的压缩性能。注:非大量零散小文件,相对zstd将消耗数倍时间获得3%~7%的性能提升,效率太低。固实的所有文件大小,或者非固实最大源文件的大小要小于字典大小的一半,再增大字典不增加压缩率。rar-L4 2~8M字典,固实,效率比Lzma L5略高,压缩率略逊。
极限:RAR L5~512MB字典固实,解压效率稍高。LZMA大字典用翻倍的耗时换来1%压缩性能。如果压缩包非常大,LZMA的性能优势将放大。
Fast Lzma2压缩需要7zip-zstd软件,解压可以用标准7zip软件,主要优势是大字典的内存占用小很多,继而可以开很多线程。基本可以达到甚至超出RAR的效率,压缩性能强一些。
究极:zpaq5,效率非常低,无论是压缩还是解压,耗时甚至是Lzma L9的十几数十倍,压缩性能提升可能在1%~10%之间,效率太低。
非固实推荐:
极速:Deflate(zip) Level3,兼容性最好的算法,性能不俗,效率也很高。
标准:rar L1 -16MB字典,L5 - 1MB字典 相对Deflate L3,压缩耗时翻倍,解压耗时相近,压缩性能提升8%。对整个大文件,倾向于L1大字典,大量零散小文件,L5小字典效率更高。
标准:Zstd Level11相对rar L1 -32M耗时增加50%,压缩性能提升3%。
标准:rarL5,字典1~4M,相对zstd逐级增加20%耗时,压缩性能提升2%。
极限:rar大字典相对4M小字典压缩耗时翻倍,压缩性能提升0.5%。
极限:Lzma2 Level5~9,视最大文件大小定夺。耗时相对rar大字典几乎翻倍,性能提升3%。
Fast Lzma2压缩需要7zip-zstd软件,解压可以用标准7zip软件,主要优势是大字典的内存占用小很多,继而可以开很多线程。基本可以达到甚至超出RAR的效率,压缩性能强一些。但是在非固实场景下,除非存在单个大文件,否则大字典没什么用。
极限:Zstd Level22,压缩率略逊Lzma,解压耗时与仅存储相近。压缩耗时是Lzma2的数倍。
冷数据归档:
tarlz打包。Lzip有三重校验,结构体长度固定,极端情况下依旧能保证CRC准确性和良好的可修复性。美中不足的是,速度较慢,恢复记录需要通过MultiPar等软件外挂。lzip L9压缩率在lzma L4~L8之间。越是大量零散文件越弱。
winrar软件可添加恢复记录,效率高。
概念介绍
容器(文件格式)
7z,zip,rar,.tar.lz,.tar.xz是容器。可以理解成饮料瓶。
7z相对zip演进
算法
压缩数据的算法可以不同。xz,7z通常默认LZMA2,zip默认Deflate,rar自有算法,.tar.lz使用简化版的lzma。
支持新算法的软件
7z增强版 或peazip软件可以在7z容器中使用其他算法:LZ4主打速度。压缩率相对LZMA较差。解压速度比TAR解压稍慢。最新演化:+Huffman霍夫曼编码对解压缩速度影响非常小,提升0.5%的压缩率。FAST LZ4+Huffman,相对LZ4压缩率相近,压缩速度进一步提升。Lizard Liz v1 +Huffman,压缩速度慢一些,压缩率提升1%。Liz系列目前面对Zstd,Brotli,各方面都没有优势。PPMd txt压缩率非常高,比LZMA2强13%。
Fast Lzma2
Fast Lzma2压缩需要上文提到的7z增强版,解压只需要标准7zip软件。
初步测试,fast lzma2相对lzma2,相同字典大小,压缩性能有2%左右的提升,字典越小解压速度提升越大,大字典解压速度别不大。压缩时,如果限制相同线程数,和lzma2相近压缩性能耗时差不多,fast lzma2可能快个10%左右。
但是,lzma2加64m以上大小的字典,压缩需要的内存很大,很多情况下线程数只能开2~4个,而fast lzma2即使用1024m这么大的字典,12线程也只需要3.1g内存,大大加快了大字典的压缩速度。只需要LZMA2一半甚至更少的时间。整体效率同RAR相近。但是压缩性能强了3%。
zstd与brotli
两种算法面对大文件高压对解压速度几乎没有影响,压缩速度会慢很多。zstd Level22压缩率与LZMAL9相近,压缩速度慢很多,解压速度快较多。总体而言不如LZMA L9实用。
brotli 字典为web文件优化。压缩html,mht的压缩率非常强劲。
Brotli与zstd的L1~3速度与Liz系列相近,但是压缩率强很多。
Brotli的L7相对zstd的L11,brotli的效率更高,zstd有更高的压缩率。
极限压缩,zstd的L22相对brotli的L11,zstd呈现碾压之势。
这两种算法面对大量零散文件,极限压缩相对LZMA-Level9反而效率低很多。标准压缩相对LZMA-Level5,效率有优势,解压耗时相近,压缩耗时少了至少一半,压缩性能有20%左右的差距。
固实压缩
将被压缩的文件文件夹视为一个文件再压缩。对大量零散小文件,压缩率提升很大。非固实压缩通常耗时要增加到1.5~3倍。
非固实压缩优点:损坏后不会丢失所有文件解压其中一个文件不需要解压整个压缩包
Lzip为长期归档设计
Lzip作者:xz不适合长期归档。xz文件头尾长度可变,有风险。Lzip固定结构。xz默认算法LZMA2将LZMA流分块,块头没有校验。
lzip采用简化的LZMA算法,Level9极限压缩32M字典。
lzip有不错的压缩率,现成的修复工具,对压缩包的数个损坏位置不同的副本可以交叉比对修复。主打可靠性,稳定性。压缩率和速度相对7z-LZMA2,rar较弱。
打包速度很慢,L8,L9效率反而更高一点。tar+lzip(包括7z的lzip插件)单线程,固实,压缩流损坏至少丢失一半文件。tar+plzip,压多线程,解单线程。分块固实大小与文件没有对齐,压缩流坏块内文件至少丢失一半,或大文件(文件大于lzip固实大小)丢失。tarlz --no-solid 非固实压缩,每文件分块。压缩流轻微损坏只丢失坏块处文件。tarlz --bsolid 默认方式,默认分块固实大小是字典两倍。大于固实大小的文件将单独分块,小于固实大小的文件将被打包到固实大小。丢失坏块内至少一半文件或一个大文件。
WinZip-.zipx
压多线程,解多线程。
zipx不支持固实,用winzip压zipx会用winzip私有算法,只能用winzip解压。
winzip默认根据文件后缀用不同算法压缩。但有点粗糙,比如txt用PPMd,.md就不会。
针对mp3等文件后缀有私有算法,其他软件不能识别。
压缩解压速度非常慢。在PPMd或其私有算法发挥的时候,既特定格式,如txt,mp3等,相对其他算法非固实压缩率更高,除此之外的场景,表现平平。
WinRAR内建恢复记录
压多线程,解单线程。
默认非固实压缩,可选固实压缩。
RAR最大的优势是,在三种兼容性相对比较高的算法,zip(Deflate),rar,7z(lzma)中,效率最高,高压压缩率不如lzma,但是速度快。低压压缩率和速度都比zip(Deflate)强。
rar非固实,L1 -32MB字典,L5 - 1MB字典(慢一点压缩率高一点点) 效率非常高。rar 固实L4 字典1~8M效率非常高。从16M大小字典开始,L5表现出最高的效率。
开箱即用,内建恢复记录,修复工具。
ZPAQ
zpaq非常善于对二进制文件进行压缩。对程序的压缩率相对LZMA都有一定提升。但是耗时非常长。
用zpaq基本都是追求压缩率,直接L5拉满,所有等级效率都非常非常低。
测试
详细测试数据表格与所用脚本
一·Into.the.Breach
资源都打包了,固实意义不大。
二·少女斗地主
资源文件都没有打包。以mp4,mp3,png为主,png文件后缀被删除,固实有很大提升。
压缩率最强: