Skip to content

Commit daeb0a5

Browse files
perf: Add benchmarks for BtreeMap::Iterator::count() (#191)
Co-authored-by: Islam El-Ashi <islam.elashi@dfinity.org>
1 parent 5ac483a commit daeb0a5

File tree

2 files changed

+289
-244
lines changed

2 files changed

+289
-244
lines changed

benchmarks/src/btreemap.rs

+35
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::ops::Bound;
2+
13
use crate::Random;
24
use canbench::{benchmark, macros::bench, BenchResult};
35
use ic_stable_structures::{storable::Blob, BTreeMap, DefaultMemoryImpl, Storable};
@@ -219,6 +221,39 @@ pub fn btreemap_insert_10mib_values() -> BenchResult {
219221
})
220222
}
221223

224+
#[bench]
225+
pub fn btreemap_iter_count_small_values() -> BenchResult {
226+
let mut btree = BTreeMap::new(DefaultMemoryImpl::default());
227+
let size: u32 = 10_000;
228+
for i in 0..size {
229+
btree.insert(i, vec![]);
230+
}
231+
232+
benchmark(|| {
233+
btree
234+
.range((Bound::Included(0), Bound::Included(size)))
235+
.count();
236+
})
237+
}
238+
239+
#[bench]
240+
pub fn btreemap_iter_count_10mib_values() -> BenchResult {
241+
let mut btree = BTreeMap::new(DefaultMemoryImpl::default());
242+
243+
let size: u8 = 200;
244+
245+
// Insert 200 10MiB values.
246+
for i in 0..size {
247+
btree.insert(i, vec![0u8; 10 * 1024]);
248+
}
249+
250+
benchmark(|| {
251+
btree
252+
.range((Bound::Included(0), Bound::Included(size)))
253+
.count();
254+
})
255+
}
256+
222257
/// Benchmarks removing keys from a BTreeMap.
223258
#[bench]
224259
pub fn btreemap_remove_blob_4_1024() -> BenchResult {

0 commit comments

Comments
 (0)