Results of the parallelism used for LZMA compression is demonstrated on the following graph:
|1p||Intel(R) Pentium(R) 4 CPU 3.20GHz|
|duo||Pentium(R) Dual-Core CPU E5200 @ 2.50GHz|
|quad||Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz|
|16p||16x Genuine Intel(R) CPU 3.40GHz|
The compression time using a single threaded PXZ is equivalent to an ordinary usage of the XZ compression utility. This time corresponds to the leftmost sample on the graph. Four different machines were tested including single, dual, quad core and 16 processor workstation. A file used for benchmarking was a cpio archive 17 848 960 B in size containing TeX Live Iwona fonts. Each compression with constant number of threads was run ten times and the mean values of compression times were put into the graph. The default compression level 6 was used.
Usage of PXZ on a single core machine doesn't make much sense as the graph shows. It is used just to show increasing overhead of the threads as they increase in number. Its compression times are plotted by pink color.
A significant improvement starts for dual core machine running just two threads. It saves more than 34% of the compression time (green color). In case of four threads it saves more than 45%.
The quad core system saves more than 65% in comparison with ordinary XZ when run with 4 threads (red color).
The last, blue colored plot corresponds to 16 processor workstation. PXZ saves more than 76% of the time with 16 threads on the same machine.
Unlike BZIP2 the LZMA coder is sequential so one can not take advantage of finite blocks and needs to split the input file to blocks encoded separatelly. This of course affects compression ratio. The following graph shows archive sizes in % of the original file as a function of threads: