Skip to content

Commit 55cb05e

Browse files
perf: Add benchmark test with allocation of many buckets to StableStructures (#164)
Co-authored-by: Islam El-Ashi <islam.elashi@dfinity.org>
1 parent 0ea5681 commit 55cb05e

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

benchmark-canisters/src/memory_manager.rs

+16
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,19 @@ pub fn memory_manager_overhead() -> BenchResult {
5656
}
5757
})
5858
}
59+
60+
/// Benchmarks the `MemoryManager`'s `grow` method.
61+
#[ic_cdk_macros::query]
62+
pub fn memory_manager_grow() -> BenchResult {
63+
let mem_mgr = MemoryManager::init_with_bucket_size(DefaultMemoryImpl::default(), 1);
64+
65+
let buckets_per_memory = 32000;
66+
67+
let memory = mem_mgr.get(MemoryId::new(0));
68+
69+
crate::benchmark(|| {
70+
for _ in 0..buckets_per_memory {
71+
memory.grow(1);
72+
}
73+
})
74+
}

benchmarks/benchmark.rs

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ lazy_static::lazy_static! {
2222
// MemoryManager benchmarks
2323
"memory_manager_baseline",
2424
"memory_manager_overhead",
25+
"memory_manager_grow",
2526

2627
// BTree benchmarks
2728
"btreemap_insert_10mib_values",

benchmarks/results.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -382,10 +382,10 @@ memory_manager_baseline:
382382
measurements:
383383
instructions: 1144
384384
stable_memory_size: 8000
385-
memory_manager_buckets_allocation:
385+
memory_manager_grow:
386386
measurements:
387-
instructions: 9043414
388-
stable_memory_size: 128001
387+
instructions: 287018881
388+
stable_memory_size: 32001
389389
memory_manager_overhead:
390390
measurements:
391391
instructions: 4605248

0 commit comments

Comments
 (0)