Difference between pixz and xz with -T option

I'm trying to compress a 100GB with a good ratio, so I decided to use xz. I don't need it to be very fast, but since I have an 8-threads CPU, I was wondering how to take advantage of them.

I found there is a parallel implementation of xz: pixz. I found too that xz has a multithread option -T. I'm experimenting with both of them but I can't see any difference in their behavior.

What's the difference between them? Why are there 2 parallel implementations for xz?

Edit: I found there is another one: pxz.


Solution 1:

I'm the author of pixz. As speculated above, I did write pixz before threading support was added to xz. I like to think that pixz prodded Lasse Collin to add multi-threading support to xz sooner.

There are still some differences between pixz and xz, of course. In xz's favour:

  • It has far more options
  • It's been tested by many more people
  • It probably has better code quality—pixz is a prototype gone rampant ;)

But there are still some reasons I like to use pixz:

  • It's much smaller, and easier to comprehend
  • It supports multi-threaded decompression, which xz does not
  • It has special behaviour on tarballs: While performing compression, it also creates an index of all the files in the tarball. This allows a single file to be extracted quickly, even if the tarball is huge.