带 -T 选项的 pixz 和 xz 之间的区别

Der*_*lai 13 compression xz

我试图以良好的比率压缩 100GB,所以我决定使用 xz。我不需要它非常快,但由于我有一个 8 线程 CPU,我想知道如何利用它们。

我发现 xz 有一个并行实现:pixz。我也发现 xz 有一个多线程选项 -T。我正在试验他们两个,但我看不出他们的行为有什么不同。

它们之间有什么区别?为什么 xz 有 2 个并行实现?

编辑:我发现还有一个:pxz。

vas*_*asi 32

我是 pixz 的作者。如上所述,我确实在将线程支持添加到 xz 之前编写了 pixz。我喜欢认为 pixz 促使 Lasse Collin 更快地为 xz 添加多线程支持。

当然,pixz 和 xz 还是有一些区别的。对 xz 有利:

  • 它有更多的选择
  • 它已经被更多人测试过
  • 它可能有更好的代码质量——pixz 是一个猖獗的原型;)

但还是有一些我喜欢使用 pixz 的原因:

  • 它更小,更容易理解
  • 它支持多线程压缩,而 xz 不支持
  • 它对 tarball 有特殊的行为:在执行压缩时,它还创建 tarball 中所有文件的索引。这允许快速提取单个文件,即使 tarball 很大。

  • 以前从未听说过 `pixz`,但现在打算仅在最后一点使用它 (5认同)
  • pixz 格式与 xz 兼容。如果 pixz 添加一个索引,它会在用 xz 解压后稍微改变输出——但唯一的变化将在 tar 存档结束标记之后,因此被 tar 忽略。如果您不需要索引,可以使用“-t”选项禁用它。 (3认同)
  • 将输入文件分成块基于: * xz 字典大小,这取决于压缩级别。对于“-6”的默认级别,它是 8 MiB。有关更多详细信息,请参阅 [xz 手册页](https://www.freebsd.org/cgi/man.cgi?query=xz&sektion=1&manpath=FreeBSD+8.3-RELEASE)。* 乘数,随 '-f' 选项提供。默认值为 2.0。因此,默认块大小将为 16 MiB。如果您想了解有关 pixz 的更多详细信息,请查看 [the docs](https://github.com/vasi/pixz/blob/master/src/pixz.1.asciidoc) (2认同)