Pages

Tuesday, 13 October 2020

多线程压缩神器pigz

 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看来不行了。

No comments:

Post a Comment