about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorHuon Wilson <dbau.pp+github@gmail.com>2014-01-07 01:42:55 +1100
committerHuon Wilson <dbau.pp+github@gmail.com>2014-01-08 00:31:24 +1100
commit3395f9d6a10aa912ab88de2e8d5b4f7de407413a (patch)
tree1766590b687fd0a9fd1a4149ff575b20cf392928 /src/libstd
parentfe03caedf0d2e32c41bb1c5169fb0162c8af6b28 (diff)
downloadrust-3395f9d6a10aa912ab88de2e8d5b4f7de407413a.tar.gz
rust-3395f9d6a10aa912ab88de2e8d5b4f7de407413a.zip
std::trie: Add some iteration/search benchmarks.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/trie.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/libstd/trie.rs b/src/libstd/trie.rs
index b6995a1d24c..94b7b881ea0 100644
--- a/src/libstd/trie.rs
+++ b/src/libstd/trie.rs
@@ -829,6 +829,66 @@ mod test_map {
 }
 
 #[cfg(test)]
+mod bench_map {
+    use super::*;
+    use prelude::*;
+    use rand::{weak_rng, Rng};
+    use extra::test::BenchHarness;
+
+    #[bench]
+    fn bench_iter_small(bh: &mut BenchHarness) {
+        let mut m = TrieMap::<uint>::new();
+        let mut rng = weak_rng();
+        for _ in range(0, 20) {
+            m.insert(rng.gen(), rng.gen());
+        }
+
+        bh.iter(|| for _ in m.iter() {})
+    }
+
+    #[bench]
+    fn bench_iter_large(bh: &mut BenchHarness) {
+        let mut m = TrieMap::<uint>::new();
+        let mut rng = weak_rng();
+        for _ in range(0, 1000) {
+            m.insert(rng.gen(), rng.gen());
+        }
+
+        bh.iter(|| for _ in m.iter() {})
+    }
+
+    #[bench]
+    fn bench_lower_bound(bh: &mut BenchHarness) {
+        let mut m = TrieMap::<uint>::new();
+        let mut rng = weak_rng();
+        for _ in range(0, 1000) {
+            m.insert(rng.gen(), rng.gen());
+        }
+
+        bh.iter(|| {
+                for _ in range(0, 10) {
+                    m.lower_bound(rng.gen());
+                }
+            });
+    }
+
+    #[bench]
+    fn bench_upper_bound(bh: &mut BenchHarness) {
+        let mut m = TrieMap::<uint>::new();
+        let mut rng = weak_rng();
+        for _ in range(0, 1000) {
+            m.insert(rng.gen(), rng.gen());
+        }
+
+        bh.iter(|| {
+                for _ in range(0, 10) {
+                    m.upper_bound(rng.gen());
+                }
+            });
+    }
+}
+
+#[cfg(test)]
 mod test_set {
     use super::*;
     use prelude::*;