我正在使用PIGZ库。 https://zlib.net/pigz/
我使用这个库每个文件使用多个线程压缩大文件,现在我想要使用每个文件的多个线程解压缩这些文件。根据文件:
解压缩无法并行化,至少在没有特殊情况下也是如此 为此目的准备了放气流。
但是,文档没有说明如何做到这一点,而且我发现很难找到相关信息。
我如何创建PIGZ可以用于减压的“特定准备的通缩流”?
答案 0 :(得分:3)
pigz目前不支持并行减压,因此专门准备这样的减压流并不会有帮助。
这个尚未实现的主要原因是,在大多数情况下,解压缩速度足够快,可以进行i / o绑定,而不受处理器限制。这不是压缩的情况,它可能比解压缩慢得多,并且并行压缩可以加快速度。
您可以使用zlib和pthread编写自己的并行解压缩程序。实际上,pigz 2.3.4及更高版本将使用--independent(-i)选项为并行解压缩制作一个特别准备的流。这使得块可以独立解压缩,并在每个块前面放置两个同步标记,以便通过扫描压缩数据快速找到它们。块的未压缩大小设置为--blocksize或-b。您可能希望将该大小设置为大于默认值,例如1M而不是128K,以减少使用-i的压缩影响。一些测试会告诉您使用-i。
减少了多少压缩(顺便说一句,pigz不是库,它是一个命令行实用程序。)