Skip to content

https://www.criwits.top/missing/archive-formats-and-tools.html 看了一遍压缩这章,写得挺清楚的,但有几个实际用的时候经常碰到的点没提到,建议补上。 #33

Description

@ClassTechStar

**1. 压缩的时候把线程数拉满,速度差很多

现在介绍了各个工具,但没说线程数这个事。其实压大文件的时候,开多少线程直接决定要等多久。我自己测下来大概是这样:

  • NanaZip 和 PeaZip 最多能开到 64 线程
  • Bandizip 免费版上限是 16 线程
  • Windows 自带的资源管理器压缩 ZIP 基本只用 1 到 2 个线程,慢得离谱

所以压大文件的时候,在高级设置里把线程数拉到 CPU 核心数(或者直接拉满),能省不少时间。资源管理器那个就别用来压大东西了。

  1. "固实"到底是什么意思

7z 那里说了压缩率高,但没解释"固实"这个选项,很多人不知道该不该开。其实就是把所有文件拼成一个连续的数据流再压,文件被切成若干个一样大的块,跨文件的重复内容能一起编码,所以压出来更小。

好处是压缩率高,特别是一大堆小文件的时候很明显。坏处是解压包里任意一个文件都得从头扫,往包里加东西或者删东西也得重新压整个包,比较慢。7z 默认是开固实的,ZIP 一般没这功能。

  1. MP4、MKV 这种视频,用 zip 和 7z 都压不动

这个挺多人踩坑的——视频文件本身就已经压过一遍了(H.264、H.265 这些编码都是有损压缩),你再拿 ZIP 或者 7z 去压,基本只能省几个百分点,没什么意义。

真想给视频瘦身,得用转码工具(HandBrake、FFmpeg 之类的),思路是这几个:

  • 降码率:比如从 8Mbps 降到 4Mbps,体积直接减半
  • 换编码:H.264 转 H.265 或者 AV1,画质差不多的情况下体积能小 30% 到 50%
  • 降分辨率或者帧率:1080p 转 720p,60帧转30帧

简单说就是:视频文件的"压缩"得用视频转码工具,不是压缩软件该干的活。

 4. 字典大小调多大,直接决定吃多少内存、压多小

这个是 7z 压缩设置里最关键的一个参数,但教程里完全没提。简单说,字典就是压缩算法能往回看多少字节来找重复内容——你现在看到一串数据,如果之前出现过一模一样的,就不用再存一遍了,记个坐标就行。这个"能往回看的范围"就是字典大小。

几个实际的数字(LZMA / LZMA2 算法):

  • 压缩的时候内存占用大概是字典大小的 11 倍,解压的时候只需要字典大小那么多
  • 16MB 字典(正常模式默认)压缩时大概吃 180MB 内存
  • 64MB 字典(极限模式默认)大概吃 700MB
  • 256MB 字典要吃将近 3GB
  • 512MB 字典直接 5.6GB 起步

所以不是越大越好。字典大了能找到更远距离的重复,压出来更小,但内存和时间成本涨得很快。而且到后面边际递减很明显——从 16MB 翻到 32MB 提升挺大,从 256MB 翻到 512MB 可能就多压了百分之一二。

这几个点都是实际用的时候经常碰到的,补上的话这章会更实用。**

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions