软件吧
登录注册账号
/posts/win-7-zip-20g-cpu
电脑必备

Win解压缩和7-Zip解压同一个20G部署包,我盯着CPU和磁盘看了半天,发现瓶颈根本不在软件

码农小张 81 0 13

先说结论:解压速度这事儿,软件之间的差距远没有我原先想的大,真正卡脖子的是磁盘和压缩包结构。

测试环境

  • 机器A:i7-12700 / 32G / 三星980 Pro 1T
  • 机器B:i5-10400 / 16G / 西数SN550 500G
  • 包:一个20.3G的部署包,内部大概12万个文件,固实压缩
  • 软件:Win解压缩 6.5.1,7-Zip 23.01 x64

实测数据(秒表掐的,每项跑3次取中位数)

机器软件解压耗时CPU峰值磁盘读峰值
AWin解压缩4分12秒62%480MB/s
A7-Zip4分28秒58%470MB/s
BWin解压缩6分51秒71%310MB/s
B7-Zip7分05秒69%300MB/s

两个软件差距在5%以内,基本可以认为是误差范围。但两台机器之间的差距接近60%,这个才是大头。

关键发现

  1. 解压时CPU根本没跑满,说明不是计算瓶颈。我拿资源监视器盯着看,磁盘队列长度一直在2以上,瓶颈在IO。
  1. 小文件太多是原罪。12万个文件平均每个不到200K,解压时大量时间花在建目录、写元数据上。我把包用7-Zip重新打包成不固实、按目录分卷的,解压时间直接降到3分20秒,降了20%。
  1. Win解压缩的多线程默认是自动,在机器A上开了8线程,机器B上开了4线程。7-Zip手动设成一样的线程数后,差距进一步缩小到2%。

命令行这块还是要说清楚

Win解压缩有命令行,但参数少得可怜,不支持通配符批量解压,不支持指定输出目录结构,退出码也不规范。我写脚本批量处理日志包的时候,只能老老实实用7-Zip的 7z x -o 加 -r 递归。日常手动解压部署包,Win解压缩的右键菜单确实快,一步到位;但一旦进到自动化流程,7-Zip还是绕不开。

给同行的建议

  • 单个大包手动解压:Win解压缩够用,速度不输
  • 批量脚本处理:7-Zip,没得选
  • 如果解压特别慢,先看文件数量和磁盘类型,别急着换软件

最后问一句:你们解压那种几十G、里面几十万个小文件的包,有没有试过先转成tar再解?我还没测这个,想听听有没有人踩过坑。

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

社区回应

0 Replies

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

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