#![feature(test)] extern crate test; use std::collections::HashMap; use test::Bencher; #[bench] fn bench(b: &mut Bencher) { let mut map = HashMap::new(); b.iter(|| { map.insert(0u8, "something"); map.insert(1, "something"); let _ = map.remove(&0); map.insert(2, "something"); map.insert(3, "something"); map.insert(4, "something"); let _ = map.remove(&3); map.insert(5, "something"); let _ = map.remove(&2); let _ = map.remove(&1); let _ = map.remove(&4); let _ = map.remove(&5); }); } #[bench] fn lookup(b: &mut Bencher) { let mut map = HashMap::new(); for i in 0i32..100 { map.insert(i, "something"); } b.iter(|| { test::black_box(map[&20i32]); }); } #[bench] fn insert_delete(b: &mut Bencher) { let mut map = HashMap::new(); for i in 0..100 { map.insert(i, "something"); } map.remove(&10); map.remove(&50); map.remove(&20); b.iter(|| { map.insert(20, test::black_box("something")); test::black_box(map.remove(&test::black_box(20))); }); } #[bench] fn iter_sparse(b: &mut Bencher) { let mut map = HashMap::new(); for i in 0..101 { map.insert(i, "something"); } for i in 0..100 { map.remove(&i); } b.iter(|| { test::black_box(test::black_box(&map).iter().next().unwrap()); }); } #[bench] fn iter(b: &mut Bencher) { let mut map = HashMap::new(); for i in 0..100 { map.insert(i, "something"); } b.iter(|| { for i in test::black_box(&map) { test::black_box(i); } }); }