电脑必备
解压日志包时硬盘狂响?我拿三种工具测了临时目录的I/O开销
79 0 13
公司日志服务器每天凌晨推过来几十个 .tar.gz 和 .zip,每个包从几百 MB 到 3 GB 不等。我平时在测试机(i5-10400 + 16G + SATA SSD)上直接解压到 /data/logs,但最近发现解压时硬盘灯常亮,机器响应变慢,怀疑是解压工具在临时目录里来回倒腾。
测试方法:
- 选取 5 个真实日志包(3 个 tar.gz,2 个 zip),总大小 7.2 GB。
- 分别用 Win解压缩 5.1.2、7-Zip 23.01、Bandizip 7.32 解压到同一块 SSD 的同一目录。
- 用 Process Monitor 记录每个工具解压过程中的磁盘写入总量和临时文件路径。
- 每轮测试前清空系统缓存,每工具跑 3 次取中位数。
结果(写入总量 / 耗时):
- Win解压缩:写入 1.8 GB(临时文件在
C:\Users\xxx\AppData\Local\Temp),耗时 52 秒。 - 7-Zip:写入 7.2 GB(直接解压到目标目录,没有额外临时文件),耗时 61 秒。
- Bandizip:写入 7.3 GB(类似 7-Zip,但临时目录里有个 100 MB 的索引文件),耗时 58 秒。
关键发现:Win解压缩 确实快,但它是把包先解到系统临时目录再移动到目标位置,所以实际磁盘写入多了一次拷贝。如果目标目录和临时目录跨盘(比如临时目录在 C 盘,目标在 D 盘),这个拷贝会变成跨盘复制,速度直接减半。我试过把临时目录改到 D 盘,耗时从 52 秒涨到 78 秒——因为默认临时目录在 SSD 上,你改到机械盘反而更慢。
我的判断:
- 如果你只是偶尔解压个软件包,Win解压缩 的速度优势很明显,适合普通用户。
- 如果是像我这样批量处理日志、部署包,而且源文件和目标目录都在同一块盘上,7-Zip 的写入量更实在,不会额外占用临时空间。
- 命令行支持这块,7-Zip 完胜,Win解压缩 的 CLI 参数太少,没法自动化。
一个折中方案:我把 Win解压缩 的临时目录指到内存盘(RamDisk),解压小包(<1 GB)时速度能再快 15%,但大包会挤爆内存,不建议。
最后问一句:你们解压日志包时,有没有碰到临时目录塞满导致系统盘爆红的情况?是怎么处理的?
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
