7-Zip 是 Windows 上最常见的压缩工具,26.05 版安装器 1663506 字节。它把压缩、解压、加密、分卷做在一个界面里,命令行版本可以和脚本接起来。
它解决的问题是「压缩级别到底该选几」。默认档压完就完事,但换一档要多久、能省多少,从来没人给过数字,只能凭感觉调。
这次拿 291997198 字节、6104 个文件的真实目录,把五档压缩级别各跑一遍,量耗时和产物大小,再看界面里那两列体积怎么读。
安装器解出七个可执行文件
7z2605-x64.exe 是 1663506 字节的自解压包,用现成的 7z 直接 x 就能拆开,不写注册表。
| 文件 | 字节 | 作用 |
|---|---|---|
| 7z.exe | 577536 | 命令行主程序 |
| 7z.dll | 1908736 | 全部压缩算法在这里 |
| 7zFM.exe | 1003520 | 图形界面 |
| 7zG.exe | 725504 | 图形界面的进度窗口 |
| 7-zip.dll | 101888 | 资源管理器右键集成 |
| Uninstall.exe | 17408 | 卸载程序,绿色版用不上 |
| 安装器本体 | 1663506 | 自解压包,拆开即得上面这些 |
| 命令行最小集 | 2486272 | 7z.exe 加 7z.dll |
| 截图那个 zip | 1178064 | 用来量界面启动的样本 |
命令行只要两个文件
7z.exe 加 7z.dll 就能完整工作,合起来 2486272 字节。剩下的图形界面和右键集成都可以不带,塞进 U 盘或者容器里只留这两个就够。
界面启动 0.41 秒
单独启动 7zFM.exe 打开一个 1178064 字节的 zip,窗口在 0.41 秒出现。界面依赖 7z.dll,把 dll 删了它会直接报错打不开。
五档压缩级别实测
样本是 291997198 字节、6104 个文件、2547 个目录的工程目录,里面混着 PHP 源码、JSON、XML 和几个已经压过的 zip。每档都新建一个存档,从头压一遍。
| 级别 | 耗时 | 产物字节 | 占源体积 |
|---|---|---|---|
| -mx=1 | 4298 毫秒 | 96142596 | 32.9 % |
| -mx=3 | 8759 毫秒 | 91676538 | 31.4 % |
| -mx=5 | 12416 毫秒 | 83671179 | 28.7 % |
| -mx=7 | 18700 毫秒 | 79143996 | 27.1 % |
| -mx=9 | 19308 毫秒 | 78824085 | 27.0 % |
| 样本规模 | 291997198 字节 | 6104 个文件 | 2547 个目录 |
| mx9 比 mx5 多花 | 6892 毫秒 | 省 4847094 字节 | 1.7 个百分点 |
| mx7 比 mx9 少花 | 608 毫秒 | 多 319911 字节 | 0.1 个百分点 |
| mx9 比 mx1 多花 | 15010 毫秒 | 省 17318511 字节 | 5.9 个百分点 |
最高档只比默认档省 4.85 个百分点
默认的 mx=5 用 12416 毫秒压到 28.7%,最高档 mx=9 用 19308 毫秒压到 27.0%。多花 6892 毫秒换来 1.7 个百分点,换算成体积是 4847094 字节。日常打包这个交换不划算。
mx=7 是个折中点
mx=7 用 18700 毫秒压到 27.1%,产物比 mx=9 大 319911 字节,却省下 608 毫秒。想省体积又不想多等一倍时间,7 比 9 更合适。
最低档快三倍
mx=1 只用 4298 毫秒,产物 32.9%。临时传个包、对方马上要解开,用这一档就够,比 mx=9 省 15010 毫秒。
界面里那两列体积
7zFM 打开 zip 后,列表里同时给「大小」和「压缩后大小」两列,压缩比根本不用算。截图那个包的总大小 1178064 字节,里面 2882048 字节的 exe 被压到 1115136 字节。

| 列 | 截图里的值 | 读法 |
|---|---|---|
| 大小 | 2882048 | 解压后的原始体积 |
| 压缩后大小 | 1115136 | 在包里占的字节 |
| CRC | EDF02E8B | 校验值,改一个字节就变 |
| 算法 | Deflate | 这个包用的是 zip 而不是 7z |
| 特征 | UTF8 | 文件名编码,中文名靠它不乱码 |
算法那列能看出包是哪来的
自己用 7z 压的显示 LZMA2,别人给的 zip 显示 Deflate。看到 Deflate 就知道压缩率有限,同样的内容换 7z 能再小一截。
UTF8 那列决定中文名
没有这个标记的 zip 在中文系统上解出来是乱码。解压前扫一眼特征列,比解完再改名省事。
装之前先确认三件事
安装器会写注册表、加右键菜单。不想留痕迹就用解出来的绿色目录,功能一样。
| 项 | 本次实测 | 说明 |
|---|---|---|
| 系统 | Windows 10 22H2(19045.6466) | x64 包 |
| 授权 | LGPL 加 unRAR 限制 | 可商用,RAR 解压部分有额外条款 |
| 写注册表 | 安装器会写 | 解压版不写 |
| 命令行最小集 | 7z.exe 加 7z.dll | 2486272 字节 |
中文界面在 Lang 目录
解出来的包里有 Lang 目录,中文语言文件在里面。命令行版本不受影响,界面语言只跟这个目录有关。
右键菜单是 7-zip.dll 提供的
绿色版不解压 7-zip.dll 到系统目录,右键菜单就不会出现。要右键菜单只能跑安装器,这是两者的实际差别。
三个真会踩的地方
参数写在双横线后面就失效
7z a -- 包.7z 源\* -mx=9 里,-- 之后的东西全被当成文件名,-mx=9 变成了一个找不到的文件。实测五档压出来的体积一模一样,全是默认档的结果。参数必须写在 -- 之前。
压缩已压过的文件收益很低
目录里那几个 zip 和 7z 本身就是压缩数据,再压一遍几乎不掉体积。总量 32.9% 这个数字被它们拉高了,纯文本目录能压到一成以下。
大目录会吃满一个核
mx=9 那轮 19308 毫秒里,CPU 基本被单线程占满。同时跑别的编译任务,时间会明显变长,压之前先看一眼负载。
什么场景值得上
给客户发资料、给同事传工程目录这类事最合适。291997198 字节压到 83671179 字节,用默认档 12416 毫秒,比换 WinRAR 或者在线压缩省事得多。
反过来,只偶尔解一个别人给的 zip 的人用不上命令行。系统自带的解压已经够,装它主要是为了右键菜单和 7z 格式的压缩率。
| 项目 | 数值 |
|---|---|
| 安装器字节 | 1663506 |
| 命令行最小集 | 2486272 字节 |
| 默认档压缩 | 12416 毫秒 / 28.7 % |
| 最高档压缩 | 19308 毫秒 / 27.0 % |
| 界面启动 | 0.41 秒 |
| 压缩样本 | 291997198 字节 |







