Introduction
QuickLZ is a data compression library in portable standard C which gives light but fast compression. QuickLZ can be used for free under the GPL-1 or GPL-2 license (where anything released into public must be open source) or under a commercial license if such has been acquired. Some properties:
World's fastest compression speed (level 0) for its class of compression ratio. Really.
A streaming mode for optimal compression ratio of small packets down to 200 - 300 bytes in size.
Speed is favoured over backwards compatibility. New algorithms and data formats are taken in use for uncompromised performance.
Extremely simple integration. The C version of 1.40 consists of just quicklz.c and quicklz.h.
To test if QuickLZ suits your needs, try the file archiver quick.exe with the -mem flag. Download the complete package here:
It contains library source, manual and demo projects for C, C#, Visual C++ and Carbide.C++ for Symbian S60 phones.
QuickLZ 1.10 and later has been verified to work on many 32- and 64-bit architectures such as x86, x64, UltraSPARC, MIPS, Itanium, PA-RISC, Alpha, Cell, POWER and 68k. Also on embedded processors like ARM and SH4/5 and 32-bit microcontrollers in different kinds of hardware.
Latest news
| 16-May-2008 |
Take a peek at a version 1.50 prototype
which significantly increases compression speed on 64-bit architectures.
I have announced it briefly on the compression forum at
http://encode.ru/forum/showthread.php?t=44 |
| 06-May-2008 |
1.40 beta 9 has been released. Also check out two automated test
tools to see how thoroughly version 1.40 is being tested before final
release (sources included). You are more than welcome to contribute
running them if you have some spare CPU cycles (Windows only). See the
1.40 beta test page. |
| 16-Mar-2008 |
Version 1.40 has been ported to both
native C#
and Java which are of course
somewhat slower - see the benchmarks below. For full performance see the
new 32- and 64-bit DLLs
with examples of calling them from C#, PowerBASIC and Visual Basic 6.
Download it all from the
1.40 beta test page. |
| 04-Feb-2008 | A bug has been found in version 1.30. Read more here. |
Benchmark
Except for QuickLZ Sharp, QuickLZ Java and zlib, following applies: The test framework bench.zip has been used. All timings start directly before function call and end immediately after function exit and is therefore excluding disk I/O and operating system calls. They are executed in REALTIME_PRIORITY_CLASS using just a single core/thread and with multiple passes to eliminate timer resolution errors. All libraries are compiled for 32-bit x86 using Visual C++ 2005 with the /Ox flag and without initial performance profiling.
Note that zlib and LZO have levels with better compression ratio and possibly faster decompression speed which have not been benchmarked.
QuickLZ Sharp was executed from Visual Studio 2005 with Ctrl+F5 to enable JIT optimization. QuickLZ Java was compiled and executed with Java 6 SE, just using javac CMain.java; java CMain from the command line. No use of profilers or special compiler options.
View full benchmark here. Averaged values summary:| Library |
Level |
Compressed size | Compression Mbyte/s | Decompression Mbyte/s |
| QuickLZ 1.40 | 1 | 47.9% | 171 | 195 |
| QuickLZ 1.40 | 2 | 42.3% | 75 | 135 |
| QuickLZ 1.40 | 3 | 40.0% | 15 | 306 |
| QuickLZ Sharp 1.40 | 1 | 47.9% | 76 | 62 |
| QuickLZ Java 1.40 | 1 | 47.9% | 48 | 89 |
| QuickLZ 1.31 | 0 | 48.4% | 167 | 199 |
| QuickLZ 1.31 | 1 | 50.6% | 146 | 306 |
| QuickLZ 1.31 | 2 | 46.4% | 62 | 314 |
| QuickLZ 1.31 | 3 | 41.4% | 29 | 331 |
| LZF 3.1 | UF | 54.9% | 110 | 239 |
| LZF 3.1 | VF | 51.9% | 101 | 231 |
| FastLZ 0.1.0 | 1 | 53.0% | 112 | 228 |
| FastLZ 0.1.0 | 2 | 50.7% | 99 | 223 |
| LZO 1X 2.02 | 1 | 48.3% | 97 | 263 |
| zlib 1.22 | 1 | 37.6% | 24 | 106 |