gpt4 book ai didi

linux - 您如何为 PIGZ(并行 gzip)准备压缩流?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:45:13 27 4
gpt4 key购买 nike

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

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

Decompression can’t be parallelized, at least not without specially prepared deflate streams for that purpose.

但是,文档没有指定如何执行此操作,而且我发现很难找到这方面的信息。

我将如何创建这些 PIGZ 可用于减压的“专门准备的放气流”?

最佳答案

pigz目前不支持并行解压,所以专门准备这样一个deflate流也无济于事。

这还没有实现的主要原因是,在大多数情况下,解压缩速度足够快,可以是 i/o 绑定(bind),而不是处理器绑定(bind)。压缩的情况并非如此,它可能比解压慢得多,而并行压缩可以大大加快速度。

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

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

关于linux - 您如何为 PIGZ(并行 gzip)准备压缩流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48196157/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com