This project is focus on building a comprehensive benchmark for comparing time and space efficiency of open source compression codecs on JVM platform. Codecs to include need to be accesible from Java (and thereby from any JVM language) via either pure Java interface or JNI; and need to support either basic block mode (byte array in, byte array out), or streaming code (InputStream in, OutputStream out).
Benchmark suite is based on Japex framework.
In addition to benchmark itself, we also provide access to set of benchmark results, which can be used for overview of general performance patterns for standard test suites. It is recommended, however, to run tests yourself since they vary depending on platform. In addition, to get more accurate understanding of how results apply to your use case(s), the best thing to do is to collect specific set of test data that reflects your usage, and run tests over this.
For more complete description, checkout out project Wiki
Currently following codecs are included in distribution:
- LZF (block and streaming modes)
- QuickLZ (block mode)
- Gzip: JDK, JCraft (streaming mode)
- Bzip2 from commons-compression (streaming mode)
- Snappy (Java JNI wrapper over native Snappy)
- LZMA:
- LZMA by 7zip (block mode)
- LZMA-java (streaming)
- note: new (2011/7) addition, not yet included in results
- LZO-java (streaming, may add block)
- note: new (2011/7) addition, not yet included in results
- LZ4 (block mode, bindings and ports of native LZ4)
(for more details on what is NOT included, check out Wiki page at https://github.com/ning/jvm-compressor-benchmark/wiki)
We have tried to make use of existing de-facto standard test suites, including:
- Calgary corpus: 18 test files from
- Canterbury corpus: 11 test files
- Maximum Compression: 10 test files
- QuickLZ: 5 test files
- Silesia: 12 test files
To access source, just clone project
To participate in discussions of benchmark suite, results, and other things related to compression performance, please join our discussion group
Benchmark code is licensed under Apache License 2.0.
Note that as usual, license only covers (re)distribution of code, and does not apply to your own use of code (i.e. running tests locally), which you can do regardless of licensing.