使用 Pixz 减少压缩文件查找时间的策略?

使用 Pixz 减少压缩文件查找时间的策略?

我有一个 PIXZ 压缩的(级别-9)tarball,其中包含大约 4000 个文件(有序,像书中的页面一样):压缩大小约为 670M。目前,我使用标准方式以编程方式访问这些文件,即

pixz -x <compressed_file_name> < tarball.tpxz | tar x -O

根据使用的指标time,提取文件平均需要 1.7 秒。由于这是程序化过程的一部分,我希望尽可能缩短时间,因此我考虑将档tpxz​​案分成三个较小的 ~200M 段(每个段包含 ~1000 个文件),并期望pixz -x对这三个段中的任何一个的运行速度都比对 ~600M 的原始段的运行速度快得多。(我可以预测三个段中的哪一个包含该过程所需的文件。)

然而令我惊讶的是,200M 段的时间指标与原始段相同:查找/解压缩平均仍需 1.7 秒。由于这与直觉和极端情况下的结果相矛盾 - 查找/解压缩包含-9单个文件的文件压缩包只需很短的时间即可完成 - 我很好奇我的分段策略为何失败,以及大家是否可以推荐其他策略来提高查找较大文件的性能pixz:1.7 秒当然是可以接受的,特别是考虑到您节省的存储成本,但更快的时间会更好。

如果存在某个 tarball 大小和/或存档文件数量阈值,超过该阈值,pixz查找/解压缩作业的完成时间将大致保持恒定,那么了解这一点会很有趣也很有用,因此提前感谢任何建议。

答案1

我是 pixz 的作者。Pixz 已经使用内部阻止来查找文件,这就是为什么使用“pixz -x file < my.tpxz”往往比“tar -xJf my.tpxz file”更快的原因。

当您使用高压缩率时,块大小会变得非常大,这使得提取单个文件的速度比提取低压缩率设置的速度要慢。您可以在 .tpxz 文件上使用“xz -lv”来查看块的大小。

相关内容