Configurable, pure rust, high performance implementation of LZ4 compression with fast compile times. Originally based on redox-os' lz4 compression, but now a complete rewrite.
By default compression and decompression uses no usafe via the default feature flags "safe-encode" and "safe-decode". If you need more performance you can disable them (e.g. with no-default-features).
```rust use lz4flex::{compressprependsize, decompresssize_prepended};
fn main(){ let input: &[u8] = b"Hello people, what's up?"; let compressed = compressprependsize(input); let uncompressed = decompresssizeprepended(&compressed).unwrap(); assert_eq!(input, uncompressed); } ```
The benchmark is run with criterion on set of test files are in the folder benches.
Currently 3 implementations are compared, this one, the redox-version, lz-fear and the c++ version via rust bindings. The lz4-flexx version is running in unsafe mode.
cargo bench
Beware that v0.4 charts use linear scaling and v0.3 charts use logarithmic scaling.
Since v0.4 the implementation is using no unsafe, this benchmark covers this.
Executed on Core i7-6700 Win10 WSL.
Executed on Macbook Pro 2017 i7
This fuzz target fuzzes, and asserts compression and decompression returns the original input.
cargo fuzz run fuzz_roundtrip
This fuzz target fuzzes, and asserts compression with cpp and decompression returns the original input.
cargo fuzz run fuzz_roundtrip_cpp_compress