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;