ic_stable_memory/benches/
btree_set.rs1#[cfg(test)]
2mod btree_set_benchmark {
3 use crate::collections::btree_set::SBTreeSet;
4 use crate::{measure, stable, stable_memory_init};
5 use rand::seq::SliceRandom;
6 use rand::thread_rng;
7 use std::collections::BTreeSet;
8
9 const ITERATIONS: usize = 1_000_000;
10
11 #[test]
12 #[ignore]
13 fn body() {
14 let mut example = Vec::new();
15 for i in 0..ITERATIONS {
16 example.push(i);
17 }
18 example.shuffle(&mut thread_rng());
19
20 {
21 let mut classic_btree_set = BTreeSet::new();
22
23 measure!("Classic btree set insert", ITERATIONS, {
24 for i in 0..ITERATIONS {
25 classic_btree_set.insert(example[i]);
26 }
27 });
28
29 measure!("Classic btree set search", ITERATIONS, {
30 for i in 0..ITERATIONS {
31 classic_btree_set.contains(&example[i]);
32 }
33 });
34
35 measure!("Classic btree set remove", ITERATIONS, {
36 for i in 0..ITERATIONS {
37 classic_btree_set.remove(&example[i]);
38 }
39 });
40 }
41
42 {
43 stable::clear();
44 stable_memory_init();
45
46 let mut stable_btree_map = SBTreeSet::new();
47
48 measure!("Stable btree set insert", ITERATIONS, {
49 for i in 0..ITERATIONS {
50 stable_btree_map.insert(example[i]);
51 }
52 });
53
54 measure!("Stable btree set search", ITERATIONS, {
55 for i in 0..ITERATIONS {
56 stable_btree_map.contains(&example[i]);
57 }
58 });
59
60 measure!("Stable btree set remove", ITERATIONS, {
61 for i in 0..ITERATIONS {
62 stable_btree_map.remove(&example[i]);
63 }
64 });
65 }
66 }
67}