Skip to content

Commit 2fcb95b

Browse files
committed
Bring in new hashmap code
1 parent d78718a commit 2fcb95b

File tree

8 files changed

+2395
-2402
lines changed

8 files changed

+2395
-2402
lines changed

src/libcollections/hashmap.rs

Lines changed: 0 additions & 2402 deletions
This file was deleted.

src/libcollections/hashmap/bench.rs

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#![cfg(test)]
2+
3+
extern crate test;
4+
use self::test::BenchHarness;
5+
use std::iter::{range_inclusive};
6+
7+
#[bench]
8+
fn insert(b: &mut BenchHarness) {
9+
use super::HashMap;
10+
11+
let mut m = HashMap::new();
12+
13+
for i in range_inclusive(1, 1000) {
14+
m.insert(i, i);
15+
}
16+
17+
let mut k = 1001;
18+
19+
b.iter(|| {
20+
m.insert(k, k);
21+
k += 1;
22+
});
23+
}
24+
25+
#[bench]
26+
fn find_existing(b: &mut BenchHarness) {
27+
use super::HashMap;
28+
29+
let mut m = HashMap::new();
30+
31+
for i in range_inclusive(1, 1000) {
32+
m.insert(i, i);
33+
}
34+
35+
b.iter(|| {
36+
m.contains_key(&412);
37+
});
38+
}
39+
40+
#[bench]
41+
fn find_nonexisting(b: &mut BenchHarness) {
42+
use super::HashMap;
43+
44+
let mut m = HashMap::new();
45+
46+
for i in range_inclusive(1, 1000) {
47+
m.insert(i, i);
48+
}
49+
50+
b.iter(|| {
51+
m.contains_key(&2048);
52+
});
53+
}
54+
55+
#[bench]
56+
fn hashmap_as_queue(b: &mut BenchHarness) {
57+
use super::HashMap;
58+
59+
let mut m = HashMap::new();
60+
61+
for i in range_inclusive(1, 1000) {
62+
m.insert(i, i);
63+
}
64+
65+
let mut k = 1;
66+
67+
b.iter(|| {
68+
m.pop(&k);
69+
m.insert(k + 1000, k + 1000);
70+
k += 1;
71+
});
72+
}
73+
74+
#[bench]
75+
fn find_pop_insert(b: &mut BenchHarness) {
76+
use super::HashMap;
77+
78+
let mut m = HashMap::new();
79+
80+
for i in range_inclusive(1, 1000) {
81+
m.insert(i, i);
82+
}
83+
84+
let mut k = 1;
85+
86+
b.iter(|| {
87+
m.find(&(k + 400));
88+
m.find(&(k + 2000));
89+
m.pop(&k);
90+
m.insert(k + 1000, k + 1000);
91+
k += 1;
92+
})
93+
}

0 commit comments

Comments
 (0)