]> git.lizzy.rs Git - rust.git/blob - library/std/benches/hash/map.rs
Merge commit '3ae8faff4d46ad92f194c2a4b941c3152a701b31' into clippyup
[rust.git] / library / std / benches / hash / map.rs
1 #![cfg(test)]
2
3 use std::collections::HashMap;
4 use test::Bencher;
5
6 #[bench]
7 fn new_drop(b: &mut Bencher) {
8     b.iter(|| {
9         let m: HashMap<i32, i32> = HashMap::new();
10         assert_eq!(m.len(), 0);
11     })
12 }
13
14 #[bench]
15 fn new_insert_drop(b: &mut Bencher) {
16     b.iter(|| {
17         let mut m = HashMap::new();
18         m.insert(0, 0);
19         assert_eq!(m.len(), 1);
20     })
21 }
22
23 #[bench]
24 fn grow_by_insertion(b: &mut Bencher) {
25     let mut m = HashMap::new();
26
27     for i in 1..1001 {
28         m.insert(i, i);
29     }
30
31     let mut k = 1001;
32
33     b.iter(|| {
34         m.insert(k, k);
35         k += 1;
36     });
37 }
38
39 #[bench]
40 fn find_existing(b: &mut Bencher) {
41     let mut m = HashMap::new();
42
43     for i in 1..1001 {
44         m.insert(i, i);
45     }
46
47     b.iter(|| {
48         for i in 1..1001 {
49             m.contains_key(&i);
50         }
51     });
52 }
53
54 #[bench]
55 fn find_nonexisting(b: &mut Bencher) {
56     let mut m = HashMap::new();
57
58     for i in 1..1001 {
59         m.insert(i, i);
60     }
61
62     b.iter(|| {
63         for i in 1001..2001 {
64             m.contains_key(&i);
65         }
66     });
67 }
68
69 #[bench]
70 fn hashmap_as_queue(b: &mut Bencher) {
71     let mut m = HashMap::new();
72
73     for i in 1..1001 {
74         m.insert(i, i);
75     }
76
77     let mut k = 1;
78
79     b.iter(|| {
80         m.remove(&k);
81         m.insert(k + 1000, k + 1000);
82         k += 1;
83     });
84 }
85
86 #[bench]
87 fn get_remove_insert(b: &mut Bencher) {
88     let mut m = HashMap::new();
89
90     for i in 1..1001 {
91         m.insert(i, i);
92     }
93
94     let mut k = 1;
95
96     b.iter(|| {
97         m.get(&(k + 400));
98         m.get(&(k + 2000));
99         m.remove(&k);
100         m.insert(k + 1000, k + 1000);
101         k += 1;
102     })
103 }