7zip如何压缩文件到最小_7zip压缩所需内存如何设置

7zip如何压缩文件到最小_7zip压缩所需内存如何设置7zip如何设置极限压缩的参数?压缩等级选LZMA2,别的默认即可。LZMA2最大好处是CPU线程数能占满。速度比PPMd 快很多。并且LZMA2 对各种文件的压缩率比别的好。PPMd只能单线程,优势是对纯文字的压缩算法加成。字典大小对压缩率没

7zip如何设置极限压缩的参数?

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

压缩等级选LZMA2,别的默认即可。

LZMA2最大好处是CPU线程数能占满。速度比PPMd 快很多。

并且LZMA2 对各种文件的压缩率比别的好。

PPMd只能单线程,优势是对纯文字的压缩算法加成。

字典大小对压缩率没啥影响,只是影响软件占用内存跟时间。

单词大小是影响纯文字的文本文件那些的,压缩速度越慢,但不影响解压速度。

固实数据大小的作用是影响在大批量文件压缩包解压几个零散文件需要解包的大小。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

压缩方式: LZMA或LZMA2均可。LZMA2 是 LZMA 的修改版本,可以储存那些难以压缩的数据,并且提供更快的解压速度,更好的多线程支持(LZMA最多使用双线程),但压缩比在某些情况下并不理想。

字典大小:影响内存占用和压缩时间,较大的字典文件能提供较高的压缩比。

单词大小影响纯文本文件的压缩比,不影响解压速度。

固实压缩可增加压缩比,如果您想使您创建的压缩档案可以更新,必须关闭固实模式。

总结:极限压缩,字典大小和单词大小设到顶,固实大小大于内容大小,CPU线程数量力而行。

我被其它的回答误导了,所以特意怒回此帖。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
我的配置参数
7zip如何压缩文件到最小_7zip压缩所需内存如何设置
我的电脑配置

我在网上搜了很多答案,大概意思都是说字典大小设置为最大、单词大小设置为最大,理论上压缩效果就会越好。

开始我也是相信了这个,所以我就把这些参数都拉满了。后来每次都是压缩到80-90%的时候,进度条就不动了。

我找了很多原因,是不是软件版本不对,后来我又去7Z的官网下一个最新版。

是不是电脑性能不行,后来我又回家用台式机压(之前用的笔记本)。

是不是硬盘性能不行,我把数据复制到固态硬盘里压缩。

是不是系统有啥问题,重启了3次。

最后都无法排除参数拉满,压缩到最后的时候,进度条不动,压缩速度为0或者极低的情况。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
字典大小拉满

最后无意中在贴吧上看到,一般字典大小设置成64M,然后字典大小到了128M的时候,再往上加就没啥明显的压缩效果了。后来按这个思路来配置,果然进度条就跑完了。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
压缩过程极为顺畅
7zip如何压缩文件到最小_7zip压缩所需内存如何设置
类似的答案很多

反正我试过了,就是不好使。也不知道说这些话的人,真的测试过没有。我真实测试,最后却是会出问题。然后给大家看一下最终的压缩效果。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
未压缩大约2G
7zip如何压缩文件到最小_7zip压缩所需内存如何设置
压缩后1.9G

最后吐槽一下360压缩,也是用极限压缩,不能设置字典这些参数,压缩之后基本没什么变化。只小了0.04G,果断扔到回收站了。啥也不是~

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
360压缩测试效果

最后放一下我的软件版本,难道是这个版本的软件有bug???

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

测试版本是7-zip 19.00,测试了相关的参数,对比情况如下:

1、混合压缩测试

(1)原始文件是WeChatSetup_3.4.0.1000,从官网网站直接下载或从的公众平台汇总下载:

,是一个生活方式

然后使用7zip解压缩,解压缩后,原始大小是497497133bytes。

(2)使用7-zip 19.00 选取不同的压缩参数:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

主要变动的参数为:

  • Archive Format(压缩格式):这里只测试7z和Zip;
  • Compress Level(压缩等级):这里不考虑时间因素,只考虑压缩效果,所以选Ultra。
  • Method(压缩方法)
7zip如何压缩文件到最小_7zip压缩所需内存如何设置
  • Dictionary Size(字典大小):即构建一个可被查询的字典,压缩时对照记录,以提高压缩效果,字典越大可以对比内容越多,压缩率就越大,当然相应的CPU、内存占用和所需时间也会增加;
  • Word Size(单词大小):即单词的长度,使用较大的单词可略微提高压缩效果,同时也稍降低压缩速度。
  • Solid Block Size(固实数据大小):固实压缩文件中即将全部文件都当成一个连续数据流来看待,压缩/提取过程中都需要上下文信息;Solid Block Size 决定了这个连续数据流的大小,减少固体块大小可减少潜在的受益和压缩效果。此处使用固定的4GB。

(3)压缩效果如下:

7z:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

可以看出选择字典大小512MB已经达到最佳优化效果,单词大小对压缩效果的影响微小。

对比Winrar 6.02 非固实压缩:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

对比Winrar 6.02 固实压缩:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

这里注意一下,Winrar虽然可选字典大小为512MB/1024MB但实际上没有效果,实际测试只有256MB。

对比7z(Bzip2/字典900KB,不同的固实块大小):

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

对比7z的ZIP模式(Zip/Ultra/Deflate64/字典大小64KB,不同的单词大小):

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

2、文本压缩测试

(1)原始文件是《牛津英汉双解V6(243303条,37925同).txt》,百度网盘中现成的字典,原始大小是 144,696,328bytes。

(2)压缩参数不再赘述,直接看压缩效果。

(3)压缩效果:

7z:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

可以看出选择字典大小256MB已经达到最佳优化效果,单词大小对压缩效果的影响微小。

对比Winrar 6.02 非固实压缩:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

对比Winrar 6.02 固实压缩:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

这里注意一下,Winrar虽然可选字典大小为512MB/1024MB但实际上没有效果,实际测试只有256MB。

对比7z(Bzip2/字典900KB,不同的固实块大小):

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

对比7z的ZIP模式(Zip/Ultra/Deflate64/字典大小64KB,不同的单词大小):

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

3、结论

LZMA2是比较好的压缩方法,字典大小根据需要一般情况下设置256MB/512MB即可达到较好的压缩效果,单词大小默认64、固实数据大小默认4GB即可。

测试程序版本:7-Zip 22.01稳定版,WinRAR 6.11稳定版。

7-Zip有一个缺点是参数多,新手往往不知道怎么设置,实际上最简单的办法就是选默认的就可以了。这是7-Zip的默认压缩参数:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

这些参数裡面影响最大的是MatchFinder匹配查找器,其次是Dictionary字典。

下面做个测试来说明各参数的影响大小,原始文件是奥日与萤火意志,总大小11.3G,分别用各个参数压缩的结果如下:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置
7zip如何压缩文件到最小_7zip压缩所需内存如何设置

最前面的是压缩耗时。「标准压缩+4M字典」指的是把压缩等级调到Lv5标准压缩,再把字典调到4M,其他参数都不变。有以下结论:

1、最大压缩相对于标准压缩,文件体积减少了0.8%;极限压缩相对于最大压缩,文件体积减少了0.8%;标准压缩原始的16M字典相对于「标准压缩+4M字典」,文件体积减少了1.4%。

2、同参数的快速压缩和标准压缩,文件体积差距约为4.8%左右。这是MatchFinder匹配查找器导致的差别。

所以「如何设置极限压缩的参数」?按我说直接标准压缩就完事了。除了MatchFinder,其他因素对压缩文件大小的影响微乎其微。一个3G大小的文件,从16M字典换到32M字典,体积才减少了30M,收益太低了。

7-Zip的zip标准压缩非常慢,比WinRAR慢几乎一倍。所以用7-Zip压zip推荐快速压缩或者极速压缩。

7z关闭固实选项後,压缩耗时增加很多,有可能增加几倍,所以7z一般不关闭固实。这是因为7z格式对非固实压缩的支持不好,WinRAR非固实压缩没有这个问题。

4M字典非固实文件大小4065MB,4M字典固实文件大小4057MB,相差0.2%。可见固实用处不大,这就是为什么WinRAR默认不开启固实。


固实有什么用

固实是一种特殊压缩方式。固实先把所有文件拼接在一起,然後对这个拼接成的大文件进行压缩。固实可以有效地利用诸如16MB、32MB的大字典,非固实状态下的大字典作用有限。我个人认为16MB、32MB的字典就算大字典了,1GB、2GB的字典更像是宣传噱头。

因为7z关闭固实会极大影响性能,所以我用WinRAR来举例子。现在我手上有某本网络小说的txt文件,500万字UTF8编码18MB大小。分别用16MB字典和32MB字典压缩:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

16MB字典和32MB字典的差别不大。

我把txt复制四份,再压缩一遍:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

很明显可以发现,17885KB就是4472KB的四倍,16MB字典和32MB字典的差别依然不大。

打开固实选项,再压缩一遍,差别出现了:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

因为这四个txt文件的内容是一样的,所以很容易想到我们可以只储存一份以节约空间。这个4486KB其实就是一份txt文件的大小。

那么,为什么16MB字典+固实没有起效呢?因为这个文件有18MB大,而你的字典只有16MB。

当被压缩文件中存在小于字典大小的相同或相似的文件时,固实压缩可以极大地减少压缩包的大小

不一定完全相同,相似也可以,打开其中一本txt文件往裡面加几个字,压缩结果还是4486KB。差得太多不行,像下面这种:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

14034KB=3545KB+4471KB+2472KB+3695KB,固实压缩没有起到作用。

初看固实压缩是不是很厉害?然并卵。因为压缩对象中很难出现大量相同或相似的文件,讲道理我为什么要把一个文件储存4份呢?像本例中的奥日与萤火意志,固实与非固实的文件大小几乎一样。

固实的副作用却是非常严重的,普通压缩文件如果其中某个文件损坏了,坏的只有这一个文件;固实压缩文件如果其中某个文件损坏了,那么整个压缩包都完蛋了。这就是为什么常常听说7z压缩包损坏,因为7z默认固实压缩。

7z另一个容易损坏的点是header compress,Bandizip翻译为报头压缩(Bandizip – 7z 压缩格式 (bandisoft.com))。header compress会降低文件稳定性,7z默认开启header compress,在参数一项中加入「hc-」可以关闭header compress。


如果你追求稳定,solid compress和header compress都不想用,可以考虑zip+LZMA算法。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

LZMA算法和LZMA2算法是一样的。LZMA2算法是LZMA算法针对固实压缩的特化版本。LZMA算法用于固实压缩只能开两个线程,LZMA2算法把LZMA算法特化之後可以开所有线程。

可以看到上述使用LZMA算法的zip压缩包在相同参数条件下跟使用LZMA2算法的7z压缩包几乎一样大,压缩速度要慢一些。本质就是用压缩速度换稳定性,我个人认为还是值得的。

可以看到256KB字典和1MB字典的速度优势很明显,标准压缩+1MB字典完全优于快速压缩+16MB字典,标准压缩+256KB字典完全优于快速压缩+4MB字典,快速压缩+1MB字典和快速压缩+256KB字典的速度优势也很明显。64KB字典和4MB字典的综合性价比就比较低了。

RAR格式1MB字典,32MB字典,32MB字典+固实的标准压缩结果:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

rar有个问题是字典太大了,最小字典都有1MB。讲道理不倚重固实压缩的话沒必要弄那么大的字典。

zip+zstd格式,采用7-Zip-zstd 21.03稳定版的压缩结果:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

zstd主要卖点还是快。zstd压缩率能达到rar的水平,打不过LZMA。

如此看来zip+LZMA是不是就天下无敌了呢?也不尽然。LZMA=LZ+Markov,LZ就是zip的压缩方式,LZMA的独到之处在于使用了马尔可夫链。马尔可夫链有个缺点,在遇到不易压缩的文件时效果很差,耗时会倍增。

奥日与萤火意志总大小11.3G,可以压到4G,压缩率35%,总的来说属于易压缩文件。我换一个zip压缩文件,把後缀名去掉,用上面几种压缩方式再压一遍的结果如下:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

可见LZMA的压缩速度直接崩了。

7-Zip作者对此的解决方案是发明了LZMA2算法,LZMA2可以提高对不易压缩文件的处理速度,代价就是跟固实压缩绑定。

上面的压缩耗时没有写错,在压不可压缩文件时,LZMA算法的MatchFinder匹配查找器HC5比BT4慢,也就是快速压缩比标准压缩慢。


《最终幻想3》原始文件大小532MB,压缩成zip文件416MB,压缩率78%。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

其他常用格式的压缩结果:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

越是容易压缩的文件,zip、rar、7z等各个格式的差距越大。最终幻想3的标准zip压缩包仅仅比LZMA压缩包大了5%,上面奥日对应的压缩包大了16%(奥日的标准zip压缩包的压缩率是38%,属于非常容易压缩的文件)。

《最终幻想3》中有大量的ogg文件和NCGR文件,这两种文件都是几乎不可压缩的。如果你不嫌麻烦的话,可以把这两种文件单独挑出来压缩,下面介绍一下方法。

使用PeaZip 8.8.0版压缩,级别选正常,方法选LZMA,字典选1MB。选择「使用高级筛选器」,在「排除」一项中加入ogg和NCGR:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

压缩完毕後打开最终幻想3.zip压缩包,点击「添加」,添加最终幻想3上一级的文件夹。「高级」选项卡中压缩级别选择「存档」,选择「使用高级筛选器」,在「只包括」一项中加入ogg和NCGR:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

这样压出来的最终文件大小是407,880KB,仅仅比1M字典的标准压缩大了0.5%。ogg和NCGR两种不可压缩文件用的都是存储方式,压缩文件质量比较高。

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

WinRAR和好压可以设定不压缩直接存储的文件:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

现在的压缩软件过滤器分两种,一种是像WinRAR和好压这样的,有两项,一项是排除的文件,另一项是不压缩直接存储的文件;另一种是像PeaZip、WinZip、PowerArchiever这样的,也是两项,一项是排除的文件,另一项是只包括的文件。

WinRAR和好压这种明显方便得多。

7-Zip默认筛选後缀名是zip、7z、rar的文件。对这三种文件,7-Zip只存储不压缩。

Bandizip目前的7.28版沒有过滤器。

我个人常用的过滤器:

*.pak *.docx *.xlsx *.pptx *.3gp *.avi *.bik *.mkv *.mov *.mp4 *.rm *.rmvb *.wmv *.aac *.flac *.mp3 *.ogg *.jpg *.png


测试一下解压缩速度。

用的材料还是奥日与萤火意志,压缩LZMA压缩包用的是7-Zip 22.01稳定版,压缩zip压缩包和rar压缩包用的是WinRAR 6.11稳定版,压缩zstd压缩包用的是7-Zip-zstd 21.03稳定版,解压缩统一用的是Bandizip 7.28版,以下是测试结果:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

zip的解压缩速度跟rar是一样的,但是zip压缩包比rar大了7%,所以解压缩耗时也多了7%。

LZMA的解压缩速度比前面四个慢了50%。LZMA快速压缩和标准压缩用的算法是一样的,所以解压缩速度是一样的,快速压缩比标准压缩大,所以要慢一点。

综合考虑压缩速度和解压缩速度的排名:

7zip如何压缩文件到最小_7zip压缩所需内存如何设置

不考虑压缩包大小的情况下,标准zip和标准zstd的速度遥遥领先。

这裡说一个反常识的知识点,我C盘有一个文件,我把它压缩成了zip包。现在我要把这个文件复制到D盘,有以下两种方法:

1.点击C盘原文件,复制粘贴到D盘。

2.点击C盘压缩包,解压缩到D盘。

问哪一种方式更快?

答案是大多数情况下,第二种方式更快。因为读盘是很慢的操作,压缩包减少了文件的大小,降低了读盘的负担,所以通常比直接复制粘贴快。

所以在软件行业,很多时候压缩文件不是为了降低大小,而是为了提高速度。微软为什么要把doc格式改成docx格式?明面上的说法是为了降低文件大小,实际上是为了提高解析速度,docx实际上就是一个zip压缩包。这样带来一个问题,就是很多文件已经被压缩过了,而这种被压缩过的文件再压缩是没有效果的,所以现在能被压缩的文件越来越少。像奥日与萤火意志这种能被压到原大小30%多的游戏简直是凤毛麟角,大多数都是压不动的。


说一下标准zip。想要一个zip文件不使用任何解压缩工具,用Windows10资源管理器就可以打开的话,有以下三点限制:

  1. 只能使用deflate压缩算法,不支持BZip2、LZMA等其他算法。

2. 只能使用zip传统加密,不支持AES加密。

3. 只能使用zip传统的z01、z02分卷,不支持7-Zip、PeaZip的001、002分卷。

基本上判断一个压缩软件是否是7-Zip套壳,看他的分卷格式就知道了,001、002是7-Zip独有的分卷格式。

BZip2是老牌压缩算法,但是在压缩率、压缩速度、解压缩速度方面都完败于LZMA算法。跟deflate不一样,deflate至少在速度方面完虐LZMA,BZip2则是在每一方面都完败。BZip2压缩率比deflate高,在Linux上用的比较多(7z作者没有开发7-Zip的Linux版本)。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/10573.html

(0)
上一篇 2024年 5月 12日 14:10
下一篇 2024年 5月 12日 14:21

相关推荐

关注微信