add benchmark for BTreeMap::from_iter

This commit is contained in:
Cheng XU 2021-08-28 17:17:27 -07:00
parent 5eacec9ec7
commit 6a6885c6bd
No known key found for this signature in database
GPG Key ID: 8794B5D7A3C67F70

View File

@ -54,6 +54,50 @@ macro_rules! map_insert_seq_bench {
};
}
macro_rules! map_from_iter_rand_bench {
($name: ident, $n: expr, $map: ident) => {
#[bench]
pub fn $name(b: &mut Bencher) {
let n: usize = $n;
// setup
let mut rng = thread_rng();
let mut vec = Vec::with_capacity(n);
for _ in 0..n {
let i = rng.gen::<usize>() % n;
vec.push((i, i));
}
// measure
b.iter(|| {
let map: $map<_, _> = vec.iter().copied().collect();
black_box(map);
});
}
};
}
macro_rules! map_from_iter_seq_bench {
($name: ident, $n: expr, $map: ident) => {
#[bench]
pub fn $name(b: &mut Bencher) {
let n: usize = $n;
// setup
let mut vec = Vec::with_capacity(n);
for i in 0..n {
vec.push((i, i));
}
// measure
b.iter(|| {
let map: $map<_, _> = vec.iter().copied().collect();
black_box(map);
});
}
};
}
macro_rules! map_find_rand_bench {
($name: ident, $n: expr, $map: ident) => {
#[bench]
@ -111,6 +155,12 @@ map_insert_rand_bench! {insert_rand_10_000, 10_000, BTreeMap}
map_insert_seq_bench! {insert_seq_100, 100, BTreeMap}
map_insert_seq_bench! {insert_seq_10_000, 10_000, BTreeMap}
map_from_iter_rand_bench! {from_iter_rand_100, 100, BTreeMap}
map_from_iter_rand_bench! {from_iter_rand_10_000, 10_000, BTreeMap}
map_from_iter_seq_bench! {from_iter_seq_100, 100, BTreeMap}
map_from_iter_seq_bench! {from_iter_seq_10_000, 10_000, BTreeMap}
map_find_rand_bench! {find_rand_100, 100, BTreeMap}
map_find_rand_bench! {find_rand_10_000, 10_000, BTreeMap}