pigz 多线程压缩神器

2018-06-24 11:34:22

pigz 是基于 gzip 的多线程压缩利器,官方 是这样介绍的:A parallel implementation of gzip for modern multi-processor, multi-core machines. 翻译成中文是:一个针对现代多处理器、多核机器的 gzip 的并行实现。

我们来测试下压缩速度: 使用 gzip 压缩 android sdk(4.5G 大)

1
2
3
4
time tar -zcf ./sdk.tar.gz ../sdk
real	3m11.418s
user	3m8.948s
sys	    0m5.630s

使用 pigz 压缩:

1
2
3
4
time tar -cf - ../sdk | pigz -p 8 > ./sdk.tgz
real	0m37.359s
user	4m36.383s
sys	    0m5.730s

可见,pigz 的速度是 gzip 的 5.3 倍,现在,我们看看解压速度。

1
2
3
4
time tar xf sdk.tar.gz
real	0m41.602s
user	0m29.835s
sys	    0m6.858s

使用 pigz 解压:

1
2
3
4
time pigz -p 8 -k -d sdk.tgz
real	0m15.635s
user	0m20.030s
sys	    0m3.677s

由于 pigz 解压后是 tar,所以还需要解压 tar 文档:

1
2
3
real	0m7.832s
user	0m0.299s
sys	    0m3.927s

使用 pigz 全部耗时 23.4 秒,而 gzip 是 41 秒,差不多 2 倍。这里 sdk 文件夹 4.5G,压缩后 1.9G,两者压缩后大小没啥差别。当压缩 20G 的文件时,发现 pigz 速度下降,接着我尝试压缩到内存里面,速度提升明显,可见,到最后影响速度的是磁盘。

最后更新于