Mercurial > lbo > hg > leveldb-rs
changeset 486:ce6ac9a9bb05
Fix broken maps benchmark
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Fri, 19 Jul 2019 17:36:14 +0200 |
parents | 96f153473c5e |
children | 76562348cb17 |
files | src/benches/maps_bench.rs src/lib.rs |
diffstat | 2 files changed, 47 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/src/benches/maps_bench.rs Fri Jul 19 14:42:06 2019 +0200 +++ b/src/benches/maps_bench.rs Fri Jul 19 17:36:14 2019 +0200 @@ -15,61 +15,84 @@ use std::collections::HashMap; use std::rc::Rc; -fn gen_key_val<I: Iterator<Item = char>>( - gen: &mut I, +fn gen_key_val<R: Rng>( + gen: &mut R, keylen: usize, vallen: usize, ) -> (Vec<u8>, Vec<u8>) { let mut key = Vec::with_capacity(keylen); let mut val = Vec::with_capacity(vallen); - let mut k = 0; - let mut v = 0; - for c in gen { - if k < keylen { - key.push(c as u8); - k += 1; - continue; - } - - if v < vallen { - val.push(c as u8); - v += 1; - continue; - } - break; + for _i in 0..keylen { + key.push(gen.gen_range('a' as u8, 'z' as u8)); + } + for _i in 0..vallen { + val.push(gen.gen_range('a' as u8, 'z' as u8)); } (key, val) } fn bench_gen_key_val(b: &mut Bencher) { let mut gen = rand::thread_rng(); - let mut gen = gen.gen_ascii_chars(); b.iter(|| { - let (k, v) = gen_key_val(&mut gen, 10, 10); + let (k, _v) = gen_key_val(&mut gen, 10, 10); k.len(); }); } fn bench_skipmap_insert(b: &mut Bencher) { let mut gen = rand::thread_rng(); - let mut gen = gen.gen_ascii_chars(); let mut skm = SkipMap::new(Rc::new(Box::new(DefaultCmp))); b.iter(|| { - let (k, v) = gen_key_val(&mut gen, 10, 10); + let (mut k, v) = gen_key_val(&mut gen, 10, 10); + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; + skm.insert(k.clone(), v.clone()); + k[9] += 1; skm.insert(k, v); }); } fn bench_hashmap_insert(b: &mut Bencher) { let mut gen = rand::thread_rng(); - let mut gen = gen.gen_ascii_chars(); let mut hm = HashMap::new(); b.iter(|| { - let (k, v) = gen_key_val(&mut gen, 10, 10); + let (mut k, v) = gen_key_val(&mut gen, 10, 10); + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; + hm.insert(k.clone(), v.clone()); + k[9] += 1; hm.insert(k, v); }); }
--- a/src/lib.rs Fri Jul 19 14:42:06 2019 +0200 +++ b/src/lib.rs Fri Jul 19 17:36:14 2019 +0200 @@ -78,5 +78,6 @@ pub use filter::{BloomPolicy, FilterPolicy}; pub use mem_env::MemEnv; pub use options::{in_memory, CompressionType, Options}; +pub use skipmap::SkipMap; pub use types::LdbIterator; pub use write_batch::WriteBatch;