TurboBench: The Ultimate Data Compression Benchmark

August 7, 2026 · View on GitHub

TurboBench:Compressor Benchmark

Build ubuntu

TurboBench Logo

TurboBench: The Ultimate Data Compression Benchmark

100+ Codecs. The Powerhouse in a Single ExecutableThe Compression Lie Detector

Tired of misleading benchmarks with I/O overhead, cache effects, and CPU throttling? TurboBench delivers high-precision, zero-overhead results you can actually trust.

Why TurboBench Stands Out

  • The only benchmark that includes LzTurbo alongside 100+ popular, latest, and fastest compressors (LZ77, Rolz, BWT, Context Mixing, Entropy Coders, and more).
  • 100% in-memory testing — no disk I/O to skew your results.
  • Supports multiple files, recursive directories, and smart concatenation of small files into multiblock tests.
  • Built to avoid common pitfalls like cache scenarios and throttling found in other tools.
  • Unlock peak performance — TurboBench reduces throttling by intelligently controlling the CPU frequency
  • Automatic sorting, updating, and merging of result files.
  • A nightly github release is created automatically whenever submodules change.
  • Creates a separate result file (file@SET.tbb) for each compressor set
  • TurboBench rank aggregation crowns the top compression libraries with 🥇 🏆 👑 — see who's king!

Broad Platform Support

Linux (amd/intel, ARM, RISC-V, PowerPC, s390x, loongson), macOS (Apple M1–M5), and Windows (MSYS2, MinGW, Visual C++).

Rich, Ready-to-Use Outputs

  • Text, HTML, CSV, Markdown.
  • :sparkles: Transfer speed sheets for real-world scenarios: GPRS, 2G/3G/4G/5G, DSL, Network, HDD, SSD, RAM.
  • :+1: HTML plots: Speedup + Speed/Ratio.
  • :new:2026.07 :+1: Automatic SVG Bar & Scatter Charts for Compression, Decompression, and Ratio.
  • Built-in peak memory usage reporting (compression + decompression) in HTML output.

All-in-one executable — no Python, no extra graphic libraries, zero dependencies, zero installers, zero configuration, no hassle. Just download, run, and benchmark.

Perfect for developers, researchers, and performance enthusiasts who demand accurate, apples-to-apples comparisons.


TurboBench — Precision you can rely on. The gold standard for compression benchmarking. 🚀

Try it now:

  • Build or Download turbobench from releases
  • List all plugins + version: "./turbobench -l2"
  • List all compiled codecs: "./turbobench -l1"
  • type "./turbobench -h" for help

Benchmark:

TurboBench vs LzBench

FeatureTurboBenchLzbench
Benchmark
Large number of codecs (isa-l/zlib-ng/blosc,...)⚠️
Control throttling via CPU frequency
Automatic sorting, updating & merging of result files
In-place progress display (compression/decompression speed)
Separate results for each compressor set
Data Handling
Concatenation of small files into one multiblock file
Independent compression of many small files
Multiple files & recursive directories
Support for very large files (multi-GB)⚠️
Dictionary support
Codec parameter support
Metrics
Rank aggregation & score with medals
Pareto-front visualization
Multiple output formats (HTML, Markdown, CSV, encode.su)⚠️
SVG bar & scatter images
Transfer-speed sheets (GPRS → 5G, HDD, SSD, RAM,...)
Peak memory/Stack usage (compress + decompress)
Codec & Configuration Coverage
Cross-platform support (x86, ARM, RISC-V, PowerPC…)⚠️
Advanced
Incremental benchmarking
Simple integration of new codecs
Nightly GitHub release w. executables
Submodule architecture with automatic codec update
- Groups FASTEST,FAST,EFFICIENT,MAX,OPTIMAL,BWT:
  • test all fast compressors in the lz4, lzturbo, zlib class
    (additional groups can be defined in the "turbobench.ini" file)

    ./turbobench -eFAST file
    
  • Some codecs can accept additional parameters (see option -l1 or file plugins.cc) (colon ':' as separator)

    ./turbobench -elzma,9mt2:d29:a1:fb273:mf=bt4:mc999:lc8:lp0:pb2 file
    
- Codecs:
  • individual codec test (output to screen & file.tbb)

    ./turbobench -elzturbo,19,29,39/brotli,6/zlib,6 file
    
  • retest or test other compressors and merge the results to file.tbb

    ./turbobench -eFAST/bzip2 file
    
  • creates a separate result file (file@SET.tbb) for each compressor set with the 'a' option

    ./turbobench -eTURBO -aTURBO file   
    ./turbobench -eFAST  -aFAST file   
    ./turbobench -eturborc,1/pivco,0,1  -aec file   
    
  • Print result file + "transfer+decompression speedup" plot to (file.html -p2) for browsing, (file.md -p4) Markdown format

    ./turbobench -p2 -S2 file.tbb ./turbobench -p4 file.tbb

- Bar/Scatter charts
  • SVG files automatically generated after each benchmark

Compile:

	git clone --depth=1 --recursive https://github.com/powturbo/TurboBench.git
    cd TurboBench
	make

Environment:

OS/Compiler (32 + 64 bits):
  • Windows: MinGW-w64 makefile
  • Linux amd/intel/risc-v: GNU GCC (>=4.6)
  • Linux amd/intel/risc-v: Clang (>=3.2)
  • Linux arm: aarch64
  • Linux risc-v: riscv64
  • MaxOS: XCode (>=9)
  • PowerPC ppc64le
  • IBM Z series s390x

Plugins:

Compressor Lz77,Rolz,Bwt,zpaq:

Entropy coder:

bitwise range coder
bytewise range coder
ABS: Asymmetric binary systems
ANS: Asymmetric Numeral Systems
Huffman Coding
memcpy

Encoding:

Transform:

TurboBench Manual

Usage

turbobench [options] [file(s)]

General Options

  • -eS : S = compressors/groups separated by /. Levels can be specified after ,. (e.g., -ezlib,1/FAST)
  • -b#s : # = blocksize {filesize}. max=1GB.
  • -d# : # = log2 dictionary size: 15-30 {blocksize}. (Only brotli, lzham, lzlib, lzma, zstd)
  • -B#s : # = max benchmark filesize {1GB} (e.g., -B4G)
  • -s#s : # = min buffer size to duplicate & test small files (e.g., -s50)
  • -r : process directories recursively

Size Modifiers (s):

  • K, M, G = 1,000, 1,000,000, 1,000,000,000
  • k, m, h = 1024, 1MB, 1GB (default is m, e.g., 64k or 64K)

Benchmark Options

  • -iX,Y : Decompression/Compression iterations {3}. e.g. -i15,15
  • -t# : # = min time in seconds per iteration {1}
  • -S# : Sleep # min after 2 min processing (minimizing CPU throttling)
  • -K#t : Max time limit for all benchmarks {24h}. t = M:millisecond, s:second, m:minute, h:hour. (e.g., 3h)
  • -D : No process real-time priority setting

Check Options

  • -C# : #=0 compress only, #=1 No check, #=2 ignore errors, #=3 exit on error, #=4 abort on error
  • -f# : check reading/writing outside bounds: #=1 compress, #=2 decompress, #=3 both

Output & Plotting Options

  • -v# # = verbosity 0..3 {1}
  • -rX,Y Show/Reveal only when compression/decompression speed > X/Y MB/s
  • -Kstr Rank Aggregation: str = combination of R/C/D = Ratio/Comp./Decomp. {RCD}
  • -kstr str = Remark/Comment string
  • `-U print memory/stack usage
  • -l# #=1 print all groups/plugins, #=2 print all codecs
  • -S# Plot transfer speed:
    • #=1 Comp speedup
    • #=2 Decomp speedup
    • #=3 Comp 'MB/s'
    • #=4 Decomp 'MB/s'
    • #=4 Comp+Decomp speedup
    • #=5 Comp+Decomp 'MB/s'
  • -p# : # = print format (1=text, 2=html, 3=htm, 4=markdown, 5/6=vBulletin, 7=csv, 8=tsv)
  • -Q# : # = Plot window size (0: 1920x1080, 1: 1600x900, 2: 1280x720, 3: 800x600) {1}
  • -g : -g = no merge w/ old result 'file.tbb', -gg = process w/o output (use for fuzzing)
  • -o : Print on standard output
  • -G : Plot memcpy
  • -w : Plot Speedup linear x-axis {log}
  • -z : Plot Ratio/Speed logarithmic x-axis {linear}

Multiblock/Join

  • -Moutput : Step 1: Concatenate all input files into a single output file organized into multiple blocks
  • -m : Step 2: Process each block independently from the merged file created in Step 1
  • -N : Text files character delimiter (e.g., -N9 for newline, 1 block/line)

Predefined Groups: (see turbobench.ini file)

Examples

./turbobench enwik9 -eFAST/bzip2/lzma,5,9
./turbobench enwik9 -eFAST/OPTIMAL/bsc,0:e2 -i0
./turbobench eECODER -k"entropy coder test"
./turbobench enwik9 -elzma,9:fb273:lc2:lp2:t2

Last update: 8 AUG 2026