Skip to content

JackDanger/gzippy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

381 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gzippy

A fast parallel gzip, written in Rust.

What is this?

gzippy compresses and decompresses files using the gzip format. It uses all your CPU cores to work faster, while producing output that any gzip tool can read.

gzippy file.txt           # Compress → file.txt.gz
gzippy -d file.txt.gz     # Decompress → file.txt
cat data | gzippy > out   # Works with pipes too

Install

cargo install gzippy

Or build from source:

git clone --recursive https://github.com/jackdanger/gzippy
cd gzippy
cargo build --release

How fast is it?

On a 4-core machine compressing 10MB of text:

Level Time Output size
Fast (-1) 24ms 4.5 MB
Default (-6) 76ms 4.0 MB
Best (-9) 201ms 3.9 MB

Decompression runs at 300-500 MB/s depending on the file.

Options

Works like gzip: -1 to -9, -c (stdout), -d (decompress), -k (keep original), -f (force), -v (verbose).

Extra options:

  • -p4 — use 4 threads (default: all cores)
  • --level 11 or --ultra — smaller output, slower
  • --level 12 or --max — smallest output

Requirements

  • 64-bit Linux or macOS
  • Rust 1.70+

Standing on shoulders

gzippy exists because of the brilliant work done by others:

  • pigz by Mark Adler — showed how to parallelize gzip
  • libdeflate by Eric Biggers — fast, modern deflate
  • zlib-ng — keeps zlib fast on modern CPUs
  • rapidgzip — parallel decompression techniques
  • ISA-L by Intel — SIMD-optimized assembly

We study their code, learn from their optimizations, and try to combine the best ideas into one tool.

License

zlib license — same as zlib and pigz.

About

Made by Jack Danger as a centaur on a mix of current models and tools.

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors