Skip to content

Commit ba1a12e

Browse files
committed
Merge pull request #21 from apasel422/update
Assorted cleanup
2 parents a5bc09e + c801c04 commit ba1a12e

File tree

4 files changed

+488
-431
lines changed

4 files changed

+488
-431
lines changed

Cargo.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
[package]
2-
32
name = "linear-map"
43
version = "0.0.4"
54
license = "MIT/Apache-2.0"
65
description = "A map backed by a vector"
76
authors = [
87
"Tobias Bucher <[email protected]>",
98
]
10-
119
repository = "https://github.com/contain-rs/linear-map"
1210
documentation = "https://contain-rs.github.io/linear-map/linear_map"
1311
keywords = ["data-structures"]

benches/bench.rs

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#![feature(test)]
2+
3+
extern crate linear_map;
4+
extern crate test;
5+
6+
use linear_map::LinearMap;
7+
8+
const SMALL: u32 = 10;
9+
const MEDIUM: u32 = 100;
10+
const BIG: u32 = 1000;
11+
12+
fn insert(b: &mut test::Bencher, num: u32) {
13+
b.iter(|| {
14+
let mut map = LinearMap::new();
15+
for i in 0..num {
16+
map.insert(i, i);
17+
}
18+
})
19+
}
20+
21+
fn remove_insert(b: &mut test::Bencher, num: u32) {
22+
b.iter(|| {
23+
let mut map = LinearMap::new();
24+
for i in 0..num {
25+
map.insert(i, i);
26+
}
27+
for i in 0..num {
28+
map.remove(&i);
29+
}
30+
})
31+
}
32+
33+
fn remove_rev_insert(b: &mut test::Bencher, num: u32) {
34+
b.iter(|| {
35+
let mut map = LinearMap::new();
36+
for i in 0..num {
37+
map.insert(i, i);
38+
}
39+
for i in 0..num {
40+
map.remove(&(num - i - 1));
41+
}
42+
})
43+
}
44+
45+
fn get_middle(b: &mut test::Bencher, num: u32) {
46+
let mut map = LinearMap::new();
47+
for i in 0..num {
48+
map.insert(i, i);
49+
}
50+
let middle = num / 2;
51+
b.iter(|| {
52+
test::black_box(map.get(&middle));
53+
test::black_box(map.get_mut(&middle));
54+
})
55+
}
56+
57+
fn get_none(b: &mut test::Bencher, num: u32) {
58+
let mut map = LinearMap::new();
59+
for i in 0..num {
60+
map.insert(i, i);
61+
}
62+
let none = num + 1;
63+
b.iter(|| {
64+
test::black_box(map.get(&none));
65+
test::black_box(map.get_mut(&none));
66+
})
67+
}
68+
69+
#[bench] fn bench_insert_small (b: &mut test::Bencher) { insert(b, SMALL); }
70+
#[bench] fn bench_insert_medium(b: &mut test::Bencher) { insert(b, MEDIUM); }
71+
#[bench] fn bench_insert_big (b: &mut test::Bencher) { insert(b, BIG); }
72+
73+
#[bench] fn bench_remove_insert_small (b: &mut test::Bencher) { remove_insert(b, SMALL); }
74+
#[bench] fn bench_remove_insert_medium(b: &mut test::Bencher) { remove_insert(b, MEDIUM); }
75+
#[bench] fn bench_remove_insert_big (b: &mut test::Bencher) { remove_insert(b, BIG); }
76+
77+
#[bench] fn bench_remove_rev_insert_small (b: &mut test::Bencher) { remove_rev_insert(b, SMALL); }
78+
#[bench] fn bench_remove_rev_insert_medium(b: &mut test::Bencher) { remove_rev_insert(b, MEDIUM); }
79+
#[bench] fn bench_remove_rev_insert_big (b: &mut test::Bencher) { remove_rev_insert(b, BIG); }
80+
81+
#[bench] fn bench_get_middle_small (b: &mut test::Bencher) { get_middle(b, SMALL); }
82+
#[bench] fn bench_get_middle_medium(b: &mut test::Bencher) { get_middle(b, MEDIUM); }
83+
#[bench] fn bench_get_middle_big (b: &mut test::Bencher) { get_middle(b, BIG); }
84+
85+
#[bench] fn bench_get_none_small (b: &mut test::Bencher) { get_none(b, SMALL); }
86+
#[bench] fn bench_get_none_medium(b: &mut test::Bencher) { get_none(b, MEDIUM); }
87+
#[bench] fn bench_get_none_big (b: &mut test::Bencher) { get_none(b, BIG); }

0 commit comments

Comments
 (0)