What is the competition?

For testing I used other algorithms available for .NET. They needed to have a .NET implementation or a .NET wrapper. There are three categories they can compete in:

Testing

I used the same method as in Performance Testing. This I didn't spend that much time and I ran the test for 3 hours only.
Please note: I used Silesia Corpus so results are averages for compressing different kind of data (binary, database dumps, text data, XML, images, incompressible) in some ratios. If you want to check how algorithms perform on your data - use your data. The results might be different.


Pareto frontier

For 'real' definition please refer to Pareto frontier.
Simply speaking Pareto frontier for compression algorithms is a set of algorithms which cannot be beaten by other algorithms.
Take a look at this picture:
pareto.png

Native

The competitors are:

Compression

compare-other-encoding-64.png
Pareto frontier: QuickLZ, LZ4

Decompression

compare-other-decoding-64.png
Pareto frontier: QuickLZ, LZO1X, LZ4
Note: LZO1X15 is in fact on Pareto frontier but as you can see it's speed advantage over LZO1X and compression ratio advantage over LZ4 is negligible.


Safe

The competitors are:

Compression

safe-compare-other-encoding-64.png
Pareto frontier: Deflate (because of compression ratio, by no means because it's speed), QuickLZ (absolutely great performance here)
Note: LZ4 has been overshadowed by QuickLZ, maybe not by a mile but still. No Pareto frontier award. I'll have to take a look at safe compression implementation again, maybe something can be done

Decompression

safe-compare-other-decoding-64.png
Pareto frontier: Deflate (again, compression ratio only), QuickLZ (good compression ratio, decent speed), LZ4 (not so much worse compression ratio and great speed)


Unsafe

I couldn't find any unsafe compression implementations. They all are native (P/Invoke) or Safe.
So the only competitor is different implementation of LZ4.

Compression

unsafe-compare-other-encoding-64.png
Note: My implementation of LZ4 is a little bit better. I used a little bit more mature C version as a template and I spent some time on tuning it. When you a take a closer look you'll notice that differences are quite small, though.

Decompression

unsafe-compare-other-decoding-64.png
Note: My implementation of LZ4 is a little bit better. I used a little bit more mature C version as a template and I spent some time on tuning it. When you a take a closer look you'll notice that differences are quite small, though.