你如何为PIGZ(并行gzip)准备放气流?

时间:2018-01-10 21:12:26

标签: linux bash parallel-processing gzip

我正在使用PIGZ库。 https://zlib.net/pigz/

我使用这个库每个文件使用多个线程压缩大文件,现在我想要使用每个文件的多个线程解压缩这些文件。根据文件:

  

解压缩无法并行化,至少在没有特殊情况下也是如此   为此目的准备了放气流。

但是,文档没有说明如何做到这一点,而且我发现很难找到相关信息。

我如何创建PIGZ可以用于减压的“特定准备的通缩流”?

1 个答案:

答案 0 :(得分:3)

pigz目前不支持并行减压,因此专门准备这样的减压流并不会有帮助。

这个尚未实现的主要原因是,在大多数情况下,解压缩速度足够快,可以进行i / o绑定,而不受处理器限制。这不是压缩的情况,它可能比解压缩慢得多,并且并行压缩可以加快速度。

您可以使用zlib和pthread编写自己的并行解压缩程序。实际上,pigz 2.3.4及更高版本将使用--independent(-i)选项为并行解压缩制作一个特别准备的流。这使得块可以独立解压缩,并在每个块前面放置两个同步标记,以便通过扫描压缩数据快速找到它们。块的未压缩大小设置为--blocksize或-b。您可能希望将该大小设置为大于默认值,例如1M而不是128K,以减少使用-i的压缩影响。一些测试会告诉您使用-i。

减少了多少压缩

(顺便说一句,pigz不是库,它是一个命令行实用程序。)