我正在使用PIGZ库。 https://zlib.net/pigz/
我使用该库在每个文件中使用多个线程来压缩大文件,现在我也想在每个文件中使用多个线程来解压缩那些文件。根据文档:
但是,文档未指定如何执行此操作,并且我发现很难找到有关此信息。
我将如何创建PIGZ可以利用这些“专门准备的放气流”进行减压?
最佳答案
Pigz当前不支持并行解压缩,因此专门准备这样的放气流将无济于事。
尚未实现的主要原因是,在大多数情况下,解压缩的速度足够快以受I/O约束,而不受处理器约束。压缩不是这种情况,压缩比解压缩要慢得多,并且并行压缩可以使压缩速度大大提高。
您可以使用zlib和pthread编写自己的并行解压缩器。 Pigz 2.3.4及更高版本实际上将通过使用--independent(-i)选项为并行解压缩特别准备的流。这样可以使块独立地解压缩,并在每个块的前面放置两个同步标记,从而可以通过扫描压缩数据来快速找到它们。使用--blocksize或-b设置块的未压缩大小。您可能希望使该尺寸大于默认尺寸,例如1M代替128K,以减少使用-i的压缩影响。一些测试将告诉您使用-i可以减少多少压缩。
(顺便说一下,pigz不是库,而是命令行实用程序。)