From edcafb69bbd85292c80893d69ad8857577978e8f Mon Sep 17 00:00:00 2001 From: Paul Masurel Date: Sat, 10 Nov 2018 17:04:29 -0800 Subject: [PATCH] Fixed benches --- Cargo.toml | 1 + src/postings/compression/mod.rs | 28 +++++++++++++--------------- src/postings/mod.rs | 2 +- src/postings/stacker/expull.rs | 9 ++++----- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a9ab41d62..0550b0446 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -72,6 +72,7 @@ default = ["mmap", "no_fail"] mmap = ["fst/mmap", "atomicwrites"] lz4-compression = ["lz4"] no_fail = ["fail/no_fail"] +unstable = [] # useful for benches. [badges] travis-ci = { repository = "tantivy-search/tantivy" } diff --git a/src/postings/compression/mod.rs b/src/postings/compression/mod.rs index 810cf28e7..6458461ac 100644 --- a/src/postings/compression/mod.rs +++ b/src/postings/compression/mod.rs @@ -266,21 +266,20 @@ pub mod tests { mod bench { use super::*; - use rand::Rng; use rand::SeedableRng; - use rand::XorShiftRng; + use rand::{Rng, XorShiftRng}; use test::Bencher; - fn generate_array_with_seed(n: usize, ratio: f32, seed_val: u32) -> Vec { - let seed: &[u32; 4] = &[1, 2, 3, seed_val]; + fn generate_array_with_seed(n: usize, ratio: f64, seed_val: u8) -> Vec { + let seed: &[u8; 16] = &[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,seed_val]; let mut rng: XorShiftRng = XorShiftRng::from_seed(*seed); - (0..u32::max_value()) - .filter(|_| rng.next_f32() < ratio) + (0u32..) + .filter(|_| rng.gen_bool(ratio)) .take(n) .collect() } - pub fn generate_array(n: usize, ratio: f32) -> Vec { + pub fn generate_array(n: usize, ratio: f64) -> Vec { generate_array_with_seed(n, ratio, 4) } @@ -297,24 +296,23 @@ mod bench { fn bench_uncompress(b: &mut Bencher) { let mut encoder = BlockEncoder::new(); let data = generate_array(COMPRESSION_BLOCK_SIZE, 0.1); - let (_, compressed) = encoder.compress_block_sorted(&data, 0u32); + let (num_bits, compressed) = encoder.compress_block_sorted(&data, 0u32); let mut decoder = BlockDecoder::new(); b.iter(|| { - decoder.uncompress_block_sorted(compressed, 0u32); + decoder.uncompress_block_sorted(compressed, 0u32, num_bits); }); } #[test] fn test_all_docs_compression_numbits() { - for num_bits in 0..33 { + for expected_num_bits in 0u8.. { let mut data = [0u32; 128]; - if num_bits > 0 { - data[0] = 1 << (num_bits - 1); + if expected_num_bits > 0 { + data[0] = (1u64 << (expected_num_bits as usize) - 1) as u32; } let mut encoder = BlockEncoder::new(); - let compressed = encoder.compress_block_unsorted(&data); - assert_eq!(compressed[0] as usize, num_bits); - assert_eq!(compressed.len(), compressed_block_size(compressed[0])); + let (num_bits, compressed) = encoder.compress_block_unsorted(&data); + assert_eq!(compressed.len(), compressed_block_size(num_bits)); } } diff --git a/src/postings/mod.rs b/src/postings/mod.rs index ec0940ff0..eda4d725e 100644 --- a/src/postings/mod.rs +++ b/src/postings/mod.rs @@ -654,7 +654,7 @@ mod bench { }); } - fn bench_skip_next(p: f32, b: &mut Bencher) { + fn bench_skip_next(p: f64, b: &mut Bencher) { let searcher = INDEX.searcher(); let segment_reader = searcher.segment_reader(0); let docs = tests::sample(segment_reader.num_docs(), p); diff --git a/src/postings/stacker/expull.rs b/src/postings/stacker/expull.rs index 2f7b5d97e..02cf858d8 100644 --- a/src/postings/stacker/expull.rs +++ b/src/postings/stacker/expull.rs @@ -175,7 +175,7 @@ mod tests { #[cfg(all(test, feature = "unstable"))] mod bench { use super::ExpUnrolledLinkedList; - use tantivy_memory_arena::MemoryArena; + use super::super::MemoryArena; use test::Bencher; const NUM_STACK: usize = 10_000; @@ -199,20 +199,19 @@ mod bench { #[bench] fn bench_push_stack(bench: &mut Bencher) { - let heap = MemoryArena::new(); bench.iter(|| { + let mut heap = MemoryArena::new(); let mut stacks = Vec::with_capacity(100); for _ in 0..NUM_STACK { - let (_, stack) = heap.allocate_object::(); + let mut stack = ExpUnrolledLinkedList::new(&mut heap); stacks.push(stack); } for s in 0..NUM_STACK { for i in 0u32..STACK_SIZE { let t = s * 392017 % NUM_STACK; - stacks[t].push(i, &heap); + stacks[t].push(i, &mut heap); } } - heap.clear(); }); } }