Skip to content

Commit

Permalink
Use fast decompression in deflate_bytes.
Browse files Browse the repository at this point in the history
This commit changes the parameters of `deflate` to do faster,
lower-quality compression. For the compression of LLVM bytecode -- which
is the main use of `deflate_bytes` -- it makes compression almost twice
as fast while the size of the compressed files is only ~2% worse.
  • Loading branch information
nnethercote committed Oct 20, 2016
1 parent feefe77 commit 94771a1
Showing 1 changed file with 6 additions and 3 deletions.
9 changes: 6 additions & 3 deletions src/libflate/lib.rs
Expand Up @@ -94,11 +94,14 @@ extern "C" {
-> *mut c_void;
}

const LZ_NORM: c_int = 0x80; // LZ with 128 probes, "normal"
const LZ_FAST: c_int = 0x01; // LZ with 1 probe, "fast"
const TDEFL_GREEDY_PARSING_FLAG: c_int = 0x04000; // fast greedy parsing instead of lazy parsing

/// Compress a buffer without writing any sort of header on the output.
/// Compress a buffer without writing any sort of header on the output. Fast
/// compression is used because it is almost twice as fast as default
/// compression and the compression ratio is only marginally worse.
pub fn deflate_bytes(bytes: &[u8]) -> Bytes {
let flags = LZ_NORM;
let flags = LZ_FAST | TDEFL_GREEDY_PARSING_FLAG;
unsafe {
let mut outsz: size_t = 0;
let res = tdefl_compress_mem_to_heap(bytes.as_ptr() as *const _,
Expand Down

0 comments on commit 94771a1

Please sign in to comment.