Plzip benchmark

Here are some (totally unscientific[1]) tests showing the performance of plzip on a multiprocessor machine.

Times are measured compressing or decompressing from RAM to /dev/null on an almost idle machine (load average of 2 to 4) and taking the best of three trials.

The compressors tested are:
plzip 1.4 (using lzlib 1.7)
pigz 2.3.3 (using zlib 1.2.7)

The file used in the tests is gcc-4.7.2.tar (529090560 bytes).

The machine used to run the tests is gcc110 from the GCC Compile Farm. 4x16x3.55 GHz IBM POWER7 / 64 GB RAM / IBM Power 730 Express server running Fedora 18 ppc64

Plzip vs pigz

Plzip provides a fast encoder, enabled by option '-0', which compresses slightly more and, depending on the number of threads, may be faster than pigz's default compression level:

time plzip -0cv gcc-4.7.2.tar > /dev/null
  gcc-4.7.2.tar:  4.951:1,  1.616 bits/byte, 79.80% saved, 529090560 in,
  106857586 out.

real	0m1.028s	(515 MB/s) (uses 64 compression threads)
user	0m39.675s
sys	0m0.647s

time pigz -cv gcc-4.7.2.tar > /dev/null
  (size of resulting gcc-4.7.2.tar.gz is 107520980)

real	0m1.271s	(416 MB/s) (uses 64 compression threads)
user	0m37.812s
sys	0m1.145s

Pigz does not implement parallel decompression. Therefore on machines with more than 4 processors plzip decompresses faster than pigz. On this machine plzip decompresses between 1.4 and 3 times faster than pigz, depending on compression ratio and number of threads:

time plzip -t gcc-4.7.2.tar.lz

real	0m0.717s	(738 MB/s)
user	0m19.523s
sys	0m0.095s

time pigz -t gcc-4.7.2.tar.gz

real	0m1.879s	(282 MB/s)
user	0m2.436s
sys	0m0.232s

Plzip goes beyond pigz on compression ratio. Here are the times and file sizes for default and maximum compression levels:

time plzip -cv gcc-4.7.2.tar > /dev/null
  gcc-4.7.2.tar:  7.525:1,  1.063 bits/byte, 86.71% saved, 529090560 in,
  70311133 out.

real	0m15.557s	(34 MB/s) (uses 32 compression threads)
user	6m7.617s
sys	0m3.642s

time plzip -t gcc-4.7.2.tar.lz

real	0m0.610s	(867 MB/s)
user	0m13.634s
sys	0m0.167s

time plzip -9cv gcc-4.7.2.tar > /dev/null
  gcc-4.7.2.tar:  8.589:1,  0.931 bits/byte, 88.36% saved, 529090560 in,
  61601101 out.

real	1m14.049s	(7.1 MB/s) (uses 8 compression threads)
user	8m45.674s
sys	0m2.373s

time plzip -t gcc-4.7.2.tar.lz

real	0m1.300s	(407 MB/s)
user	0m8.447s
sys	0m0.090s

[1] Paraphrasing John von Neumann, there's no sense in being precise when you don't even know what kind of hardware or compiler will use the person reading this. Performance varies widely, specially among multiprocessor machines.

Copyright © 2016 Antonio Diaz Diaz

You are free to copy, modify and distribute all or part of this article without limitation.

Updated: 2016-02-17