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

标签 linux bash parallel-processing gzip

我正在使用 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/

相关文章:

android - 如何在 Linux 上构建适用于 Android 的 MuPDF

java - JDBC查询多个数据库

java - 显示 Java 中与 2 个线程同步的用法

Python Dask 并行运行 Bag 操作

linux - 编译长参数的更快方法

在 Linux 上使用 chromedriver 和 chrome 时出现 java.lang.ExceptionInInitializerError

php - 计划任务不起作用

bash - 重命名文件扩展名而不指定

linux - Bash Grep 和发送

linux - 在 Linux 中,如何编写脚本来抓取所有 .js 文件?