电脑必备
7z批量压日志,我拿三种参数各跑一周,最后发现默认字典大小最稳
10 0 7
背景:每天要处理 20~30 个日志包,单个包解压后 1~3GB,之前一直用 7z 默认参数批量压,最近想优化下速度,就拿三台机器做了组对照实测。
测试环境
- 版本:7-Zip 23.01 x64
- 机器A:i7-12700 / 32G / NVMe
- 机器B:i5-10400 / 16G / SATA SSD
- 机器C:R5-5600U / 16G / NVMe(笔记本)
- 样本:同一批 50 个日志目录,原始总大小 62GB
三组参数
- 默认:
-mx=5(字典大小由 7z 自动选) - 手动加大字典:
-mx=9 -md=256m - 压缩包分卷+固实:
-mx=7 -ms=on -v2g
结果数据(三台机子取平均)
- 默认组:压缩比 8.3%,耗时 41 分钟,解压 12 分钟
- 大字典组:压缩比 7.9%,耗时 78 分钟,解压 19 分钟
- 分卷组:压缩比 8.1%,耗时 55 分钟,解压 14 分钟,但解压后文件顺序在三台机子上不一致
踩坑细节
第三组那个解压顺序的问题最坑:同样的包,机器A 解出来日志文件是按修改时间排的,机器C 按文件名排。后来翻 7z 文档才发现固实块里文件顺序跟打包时的目录遍历顺序有关,不同文件系统上读目录的顺序不一样。这直接影响了我后面用脚本按顺序 grep 日志的流程,差点误判成压缩包损坏。
结论
- 默认参数
-mx=5对我们这种日志场景其实最划算:压缩比只差 0.4%,时间省一半。 - 大字典对文本日志收益有限,因为单文件普遍不大,字典填不满。
- 要分卷就别开固实,或者固实前先
-mfc=off固定文件顺序。 - 需要命令行批量处理的还是 7z,Win解压缩图形界面快是快,但脚本里没法调
-md、-ms这些参数。
问题
你们批量压日志的时候会手动调字典大小吗?还是直接用默认?我这边目前只敢默认跑,想看看有没有人测过字典大小对单文件日志的真实收益。
登录后可以为帖子点赞,但本帖内容对所有人开放阅读。
