pigz 是基于gzip的多线程压缩利器,官方 是这样介绍的:A parallel implementation of gzip for modern multi-processor, multi-core machines. 翻译成中文是:一个针对现代多处理器、多核机器的 gzip 的并行实现。首先,它是gzip的并行实现,其次是针对现代多处理器、多核机器。
不废话了,我们先来测试下压缩速度:
1、使用 gzip 压缩 android sdk(4.5G大): time tar -zcf ./sdk.tar.gz ../sdk
输出如下:
real 3m11.418s user 3m8.948s sys 0m5.630s
2、使用 pigz 压缩:time tar -cf - ../sdk | pigz -p 8 > ./sdk.tgz
输出如下:
real 0m37.359s user 4m36.383s sys 0m5.730s
可见,pigz的速度是gzip的 5.3 倍,现在,我们看看解压速度。
3、使用gzip解压:time tar xf sdk.tar.gz
输出如下:
real 0m41.602s user 0m29.835s sys 0m6.858s
4、使用pigz解压:time pigz -p 8 -k -d sdk.tgz
输出如下:
real 0m15.635s user 0m20.030s sys 0m3.677s
由于pigz解压后是tar,所以还需要解压tar文档:time tar -xf sdk.tar
输出如下:
real 0m7.832s user 0m0.299s sys 0m3.927s
那么使用pigz全部耗时 23.4 秒,而gzip 是41秒。差不多2倍。这里sdk文件夹4.5G,压缩后1.9G,两者压缩后大小没啥差别。当压缩20G的文件时,发现pigz速度下降,接着我尝试压缩到内存里面,速度提升明显,可见,到最后影响速度的却是磁盘,我14年买的三星ssd看来不行了。