#huffman-coding #huffman #benchmark #decompression #data-structures

app coding_benchmark

The program for benchmarking Huffman coding algorithms

4 releases

0.1.3 Mar 19, 2024
0.1.2 Feb 25, 2024
0.1.1 Feb 25, 2024
0.1.0 Feb 24, 2024

#145 in Compression

Download history 84/week @ 2024-02-18 283/week @ 2024-02-25 17/week @ 2024-03-03 18/week @ 2024-03-10 160/week @ 2024-03-17 3/week @ 2024-03-24 5/week @ 2024-03-31

187 downloads per month

MIT/Apache

240KB
3.5K SLoC

coding_benchmark is the program (by Piotr Beling) for benchmarking implementations of Huffman coding algorithms.

It can test the implementations included in the following crates:

Please run the program with the --help switch to see the available options.

Below you can find instruction for installing coding_benchmark and reproducing experiments performed with it, which can be found in published or under review papers. Note that these instructions have been tested under GNU/Linux and may require some modifications for other systems.

Installation

coding_benchmark can be compiled and installed from sources. To do this, a Rust compiler is needed. The easiest way to obtain the compiler along with other necessary tools (like cargo) is to use rustup.

Please follow the instructions at https://www.rust-lang.org/tools/install.

Once Rust is installed, just execute the following to install coding_benchmark with native optimizations:

RUSTFLAGS="-C target-cpu=native" cargo install coding_benchmark

Reproducing experiments from the papers

Rust libraries and programs focused on succinct data structures

(Piotr Beling, BSuccinct: Rust libraries and programs focused on succinct data structures, SoftwareX, Volume 26, 2024, 101681, ISSN 2352-7110, https://doi.org/10.1016/j.softx.2024.101681)

To see the results for all implementations, 100MB (100*1024*1024=104857600) text of randomly drawn (with a non-uniform distribution) 1 byte symbols (with an entropy of 4.83 bits/symbol), just execute:

./coding_benchmark -t 100 -c 20 -l 104857600 all

Note that the -t 100 -c 20 switches force a long testing time (100s for warming up + about 100s for performing each test + 20s cooling/sleeping between tests). They can be omitted to get results faster, but averaged over fewer repetitions.

Dependencies

~5.5MB
~91K SLoC