软件吧
登录注册账号
/posts/7z-zip
电脑必备

部署包压缩格式选7z还是zip,我把解压耗时记了个表,结果和直觉不一样

码农小张 88 0 13

平时给测试环境推部署包,包不大,200M 上下,一天推七八次是常事。一直默认往外发 zip,图个谁都能开。上周突发奇想,把同一份 dist 目录分别压成 tar.gz、7z 和 zip 三种,丢同一台机器上解压,拿秒表记了 10 轮取中位数,结果有点反直觉。

先说环境:Win10 22H2,i5-12400,NVMe 盘,工具版本 7z 23.01、Win解压缩 5.6.1。包内是典型的前端产物,小文件多,大概 1.2 万个。

实测中位数(单位秒):

  • zip(默认压缩):解压 6.8s,体积 198M
  • 7z(默认压缩):解压 9.4s,体积 142M
  • tar.gz(gzip -6):解压 7.2s,体积 151M

单看解压,zip 反而最快。原因不难猜:7z 的 LZMA2 解压要更多 CPU,小文件多的时候单线程解压的短板被放大。但把“传输 + 解压”加起来算,结论就变了——7z 包小了将近 30%,走内网千兆传 142M 比 198M 少 0.5s 左右,再叠上解压那 2.6s 的差,整体还是 zip 略胜。

所以我的判断是:小包、内网、一天推好几次,zip 更省事,兼容性还不用操心。只有包大到几百 M 以上、或者走公网传,7z 的体积优势才划算。

踩过的坑有两个:一是 zip 默认压缩级别太低,我一开始没注意,换成 -9 后体积能再小一成,解压耗时几乎没变;二是 7z 包别用 Windows 右键直接解,批量场景下还是命令行稳,7z x -o 指定输出目录,脚本里好对账。

另外提一句校验:解压完我习惯拿文件数加 CRC 对一遍,zip 和 7z 都支持,脚本里跑 7z t 或者 unzip -t 都行,比肉眼看靠谱。

想问下各位,你们推部署包一般用哪种格式?有没有人试过压缩级别和线程数一起调的,能不能把小文件多的场景再压一压?

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

0 Replies

还没有回应,抢一个沙发。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。