diff --git a/.gitignore b/.gitignore index fef0b873..c169d542 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ amalgamation/ example? miniz_tester test_scratch +benchout miniz_oxide.iml CMakeCache.txt diff --git a/benches/bench.rs b/benches/bench.rs index 9d9e23c7..23f3df6a 100644 --- a/benches/bench.rs +++ b/benches/bench.rs @@ -62,14 +62,14 @@ fn get_test_file_data(name: &str) -> Vec { macro_rules! decompress_bench { ($bench_name:ident, $decompress_func:ident, $level:expr, $path_to_data:expr) => { #[bench] - fn $bench_name(b: &mut Bencher) { - let input = get_test_file_data($path_to_data); - let compressed = compress_to_vec(input.as_slice(), $level); + fn $bench_name(b: &mut ::Bencher) { + let input = ::get_test_file_data($path_to_data); + let compressed = ::compress_to_vec(input.as_slice(), $level); let mut out_len: usize = 0; b.iter(|| unsafe { - w($decompress_func( - compressed.as_ptr() as *mut c_void, + ::w(::$decompress_func( + compressed.as_ptr() as *mut ::c_void, compressed.len(), &mut out_len, 0, @@ -82,14 +82,14 @@ macro_rules! decompress_bench { macro_rules! compress_bench { ($bench_name:ident, $compress_func:ident, $level:expr, $path_to_data:expr) => { #[bench] - fn $bench_name(b: &mut Bencher) { - let input = get_test_file_data($path_to_data); + fn $bench_name(b: &mut ::Bencher) { + let input = ::get_test_file_data($path_to_data); let mut out_len: usize = 0; - let flags = create_comp_flags_from_zip_params($level, -15, 0) as i32; + let flags = ::create_comp_flags_from_zip_params($level, -15, 0) as i32; b.iter(|| unsafe { - w($compress_func( - input.as_ptr() as *mut c_void, + ::w(::$compress_func( + input.as_ptr() as *mut ::c_void, input.len(), &mut out_len, flags, @@ -99,239 +99,237 @@ macro_rules! compress_bench { }; } -compress_bench!( - compress_bin_lvl_1_oxide, - tdefl_compress_mem_to_heap, - 1, - "benches/data/bin" -); -compress_bench!( - compress_bin_lvl_6_oxide, - tdefl_compress_mem_to_heap, - 6, - "benches/data/bin" -); -compress_bench!( - compress_bin_lvl_9_oxide, - tdefl_compress_mem_to_heap, - 9, - "benches/data/bin" -); - -compress_bench!( - compress_bin_lvl_1_miniz, - c_tdefl_compress_mem_to_heap, - 1, - "benches/data/bin" -); -compress_bench!( - compress_bin_lvl_6_miniz, - c_tdefl_compress_mem_to_heap, - 6, - "benches/data/bin" -); -compress_bench!( - compress_bin_lvl_9_miniz, - c_tdefl_compress_mem_to_heap, - 9, - "benches/data/bin" -); - - -compress_bench!( - compress_code_lvl_1_oxide, - tdefl_compress_mem_to_heap, - 1, - "benches/data/code" -); -compress_bench!( - compress_code_lvl_6_oxide, - tdefl_compress_mem_to_heap, - 6, - "benches/data/code" -); -compress_bench!( - compress_code_lvl_9_oxide, - tdefl_compress_mem_to_heap, - 9, - "benches/data/code" -); - -compress_bench!( - compress_code_lvl_1_miniz, - c_tdefl_compress_mem_to_heap, - 1, - "benches/data/code" -); -compress_bench!( - compress_code_lvl_6_miniz, - c_tdefl_compress_mem_to_heap, - 6, - "benches/data/code" -); -compress_bench!( - compress_code_lvl_9_miniz, - c_tdefl_compress_mem_to_heap, - 9, - "benches/data/code" -); - - -compress_bench!( - compress_compressed_lvl_1_oxide, - tdefl_compress_mem_to_heap, - 1, - "benches/data/compressed" -); -compress_bench!( - compress_compressed_lvl_6_oxide, - tdefl_compress_mem_to_heap, - 6, - "benches/data/compressed" -); -compress_bench!( - compress_compressed_lvl_9_oxide, - tdefl_compress_mem_to_heap, - 9, - "benches/data/compressed" -); - -compress_bench!( - compress_compressed_lvl_1_miniz, - c_tdefl_compress_mem_to_heap, - 1, - "benches/data/compressed" -); -compress_bench!( - compress_compressed_lvl_6_miniz, - c_tdefl_compress_mem_to_heap, - 6, - "benches/data/compressed" -); -compress_bench!( - compress_compressed_lvl_9_miniz, - c_tdefl_compress_mem_to_heap, - 9, - "benches/data/compressed" -); - - - -decompress_bench!( - decompress_bin_lvl_1_oxide, - tinfl_decompress_mem_to_heap, - 1, - "benches/data/bin" -); -decompress_bench!( - decompress_bin_lvl_6_oxide, - tinfl_decompress_mem_to_heap, - 6, - "benches/data/bin" -); -decompress_bench!( - decompress_bin_lvl_9_oxide, - tinfl_decompress_mem_to_heap, - 9, - "benches/data/bin" -); - -decompress_bench!( - decompress_bin_lvl_1_miniz, - c_tinfl_decompress_mem_to_heap, - 1, - "benches/data/bin" -); -decompress_bench!( - decompress_bin_lvl_6_miniz, - c_tinfl_decompress_mem_to_heap, - 6, - "benches/data/bin" -); -decompress_bench!( - decompress_bin_lvl_9_miniz, - c_tinfl_decompress_mem_to_heap, - 9, - "benches/data/bin" -); - - -decompress_bench!( - decompress_code_lvl_1_oxide, - tinfl_decompress_mem_to_heap, - 1, - "benches/data/code" -); -decompress_bench!( - decompress_code_lvl_6_oxide, - tinfl_decompress_mem_to_heap, - 6, - "benches/data/code" -); -decompress_bench!( - decompress_code_lvl_9_oxide, - tinfl_decompress_mem_to_heap, - 9, - "benches/data/code" -); - -decompress_bench!( - decompress_code_lvl_1_miniz, - c_tinfl_decompress_mem_to_heap, - 1, - "benches/data/code" -); -decompress_bench!( - decompress_code_lvl_6_miniz, - c_tinfl_decompress_mem_to_heap, - 6, - "benches/data/code" -); -decompress_bench!( - decompress_code_lvl_9_miniz, - c_tinfl_decompress_mem_to_heap, - 9, - "benches/data/code" -); - - -decompress_bench!( - decompress_compressed_lvl_1_oxide, - tinfl_decompress_mem_to_heap, - 1, - "benches/data/compressed" -); -decompress_bench!( - decompress_compressed_lvl_6_oxide, - tinfl_decompress_mem_to_heap, - 6, - "benches/data/compressed" -); -decompress_bench!( - decompress_compressed_lvl_9_oxide, - tinfl_decompress_mem_to_heap, - 9, - "benches/data/compressed" -); +mod oxide { + compress_bench!( + compress_bin_lvl_1, + tdefl_compress_mem_to_heap, + 1, + "benches/data/bin" + ); + compress_bench!( + compress_bin_lvl_6, + tdefl_compress_mem_to_heap, + 6, + "benches/data/bin" + ); + compress_bench!( + compress_bin_lvl_9, + tdefl_compress_mem_to_heap, + 9, + "benches/data/bin" + ); + + compress_bench!( + compress_code_lvl_1, + tdefl_compress_mem_to_heap, + 1, + "benches/data/code" + ); + compress_bench!( + compress_code_lvl_6, + tdefl_compress_mem_to_heap, + 6, + "benches/data/code" + ); + compress_bench!( + compress_code_lvl_9, + tdefl_compress_mem_to_heap, + 9, + "benches/data/code" + ); + + compress_bench!( + compress_compressed_lvl_1, + tdefl_compress_mem_to_heap, + 1, + "benches/data/compressed" +); + compress_bench!( + compress_compressed_lvl_6, + tdefl_compress_mem_to_heap, + 6, + "benches/data/compressed" +); + compress_bench!( + compress_compressed_lvl_9, + tdefl_compress_mem_to_heap, + 9, + "benches/data/compressed" + ); + + decompress_bench!( + decompress_bin_lvl_1, + tinfl_decompress_mem_to_heap, + 1, + "benches/data/bin" + ); + decompress_bench!( + decompress_bin_lvl_6, + tinfl_decompress_mem_to_heap, + 6, + "benches/data/bin" + ); + decompress_bench!( + decompress_bin_lvl_9, + tinfl_decompress_mem_to_heap, + 9, + "benches/data/bin" + ); + + decompress_bench!( + decompress_code_lvl_1, + tinfl_decompress_mem_to_heap, + 1, + "benches/data/code" + ); + decompress_bench!( + decompress_code_lvl_6, + tinfl_decompress_mem_to_heap, + 6, + "benches/data/code" + ); + decompress_bench!( + decompress_code_lvl_9, + tinfl_decompress_mem_to_heap, + 9, + "benches/data/code" + ); + + decompress_bench!( + decompress_compressed_lvl_1, + tinfl_decompress_mem_to_heap, + 1, + "benches/data/compressed" + ); + decompress_bench!( + decompress_compressed_lvl_6, + tinfl_decompress_mem_to_heap, + 6, + "benches/data/compressed" + ); + decompress_bench!( + decompress_compressed_lvl_9, + tinfl_decompress_mem_to_heap, + 9, + "benches/data/compressed" + ); +} -decompress_bench!( - decompress_compressed_lvl_1_miniz, - c_tinfl_decompress_mem_to_heap, - 1, - "benches/data/compressed" -); -decompress_bench!( - decompress_compressed_lvl_6_miniz, - c_tinfl_decompress_mem_to_heap, - 6, - "benches/data/compressed" -); -decompress_bench!( - decompress_compressed_lvl_9_miniz, - c_tinfl_decompress_mem_to_heap, - 9, - "benches/data/compressed" -); +mod miniz { + compress_bench!( + compress_bin_lvl_1, + c_tdefl_compress_mem_to_heap, + 1, + "benches/data/bin" + ); + compress_bench!( + compress_bin_lvl_6, + c_tdefl_compress_mem_to_heap, + 6, + "benches/data/bin" + ); + compress_bench!( + compress_bin_lvl_9, + c_tdefl_compress_mem_to_heap, + 9, + "benches/data/bin" + ); + + compress_bench!( + compress_code_lvl_1, + c_tdefl_compress_mem_to_heap, + 1, + "benches/data/code" + ); + compress_bench!( + compress_code_lvl_6, + c_tdefl_compress_mem_to_heap, + 6, + "benches/data/code" + ); + compress_bench!( + compress_code_lvl_9, + c_tdefl_compress_mem_to_heap, + 9, + "benches/data/code" + ); + + compress_bench!( + compress_compressed_lvl_1, + c_tdefl_compress_mem_to_heap, + 1, + "benches/data/compressed" + ); + compress_bench!( + compress_compressed_lvl_6, + c_tdefl_compress_mem_to_heap, + 6, + "benches/data/compressed" + ); + compress_bench!( + compress_compressed_lvl_9, + c_tdefl_compress_mem_to_heap, + 9, + "benches/data/compressed" + ); + + decompress_bench!( + decompress_bin_lvl_1, + c_tinfl_decompress_mem_to_heap, + 1, + "benches/data/bin" + ); + decompress_bench!( + decompress_bin_lvl_6, + c_tinfl_decompress_mem_to_heap, + 6, + "benches/data/bin" + ); + decompress_bench!( + decompress_bin_lvl_9, + c_tinfl_decompress_mem_to_heap, + 9, + "benches/data/bin" + ); + + decompress_bench!( + decompress_code_lvl_1, + c_tinfl_decompress_mem_to_heap, + 1, + "benches/data/code" + ); + decompress_bench!( + decompress_code_lvl_6, + c_tinfl_decompress_mem_to_heap, + 6, + "benches/data/code" + ); + decompress_bench!( + decompress_code_lvl_9, + c_tinfl_decompress_mem_to_heap, + 9, + "benches/data/code" + ); + + decompress_bench!( + decompress_compressed_lvl_1, + c_tinfl_decompress_mem_to_heap, + 1, + "benches/data/compressed" + ); + decompress_bench!( + decompress_compressed_lvl_6, + c_tinfl_decompress_mem_to_heap, + 6, + "benches/data/compressed" + ); + decompress_bench!( + decompress_compressed_lvl_9, + c_tinfl_decompress_mem_to_heap, + 9, + "benches/data/compressed" + ); +} #[bench] fn create_compressor(b: &mut Bencher) { diff --git a/miniz_oxide/src/deflate/tdef_oxide.rs b/miniz_oxide/src/deflate/tdef_oxide.rs index b99f8cf1..4be397c9 100644 --- a/miniz_oxide/src/deflate/tdef_oxide.rs +++ b/miniz_oxide/src/deflate/tdef_oxide.rs @@ -754,7 +754,7 @@ impl HuffmanOxide { return; } - num_codes[max_code_size] += num_codes[max_code_size + 1..].iter().sum(); + num_codes[max_code_size] += num_codes[max_code_size + 1..].iter().sum::(); let total = num_codes[1..max_code_size + 1] .iter() .rev() @@ -1279,7 +1279,8 @@ fn compress_lz_codes( bits_in: output.bits_in, }; - assert!(lz_code_buf.len() >= 4); + // TODO: with assert fails really fast at with ./test.sh + debug_assert!(lz_code_buf.len() >= 4); let mut i: usize = 0; while i < lz_code_buf.len() { diff --git a/travis-after-success.sh b/travis-after-success.sh index af9fedb8..1b4a2b6f 100755 --- a/travis-after-success.sh +++ b/travis-after-success.sh @@ -1,46 +1,5 @@ #!/usr/bin/env bash -set -e -set -x - -if [ "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" != "master" ] && [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then - REMOTE_URL="$(git config --get remote.origin.url)" - cargo install cargo-benchcmp - - # Clone the repository fresh..for some reason checking out master fails - # from a normal PR build's provided directory - cd ${TRAVIS_BUILD_DIR}/.. - git clone ${REMOTE_URL} "${TRAVIS_REPO_SLUG}-bench" - cd "${TRAVIS_REPO_SLUG}-bench" - - # The Travis environment variables behave like so: - # TRAVIS_BRANCH - # - if PR build, this is the pr base branch - # - if push build, this is the branch that was pushed - # TRAVIS_PULL_REQUEST_BRANCH - # - if PR build, this is the "target" of the pr, i.e. not the base branch - # - if push build, this is blank - # - # Example: - # You open a PR with base `master`, and PR branch `foo` - # During a PR build: - # TRAVIS_BRANCH=master - # TRAVIS_PULL_REQUEST_BRANCH=foo - # During a push build: - # TRAVIS_BRANCH=foo - # TRAVIS_PULL_REQUEST_BRANCH= - - # Bench the pull request base or master - if [ -n "$TRAVIS_PULL_REQUEST_BRANCH" ]; then - git checkout -f "$TRAVIS_BRANCH" - else # this is a push build - # This could be replaced with something better like asking git which - # branch is the base of $TRAVIS_BRANCH - git checkout -f master - fi - cargo bench --verbose | tee previous-benchmark - # Bench the current commit that was pushed - git checkout -f "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" - cargo bench --verbose | tee current-benchmark - cargo benchcmp previous-benchmark current-benchmark -fi +cargo install cargo-benchcmp +cargo bench > benchout +cargo benchcmp miniz:: oxide:: benchout