diff --git a/benchmarks/src/btreemap.rs b/benchmarks/src/btreemap.rs index ca478de6..a186d3ee 100644 --- a/benchmarks/src/btreemap.rs +++ b/benchmarks/src/btreemap.rs @@ -5,212 +5,141 @@ use ic_stable_structures::{storable::Blob, BTreeMap, DefaultMemoryImpl, Memory, use std::ops::Bound; use tiny_rng::{Rand, Rng}; -#[bench(raw)] -pub fn btreemap_insert_blob_4_1024() -> BenchResult { - insert_blob_helper::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_4_1024_v2() -> BenchResult { - insert_blob_helper_v2::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_8_1024() -> BenchResult { - insert_blob_helper::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_8_1024_v2() -> BenchResult { - insert_blob_helper_v2::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_16_1024() -> BenchResult { - insert_blob_helper::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_16_1024_v2() -> BenchResult { - insert_blob_helper_v2::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_32_1024() -> BenchResult { - insert_blob_helper::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_32_1024_v2() -> BenchResult { - insert_blob_helper_v2::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_64_1024() -> BenchResult { - insert_blob_helper::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_64_1024_v2() -> BenchResult { - insert_blob_helper_v2::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_128_1024() -> BenchResult { - insert_blob_helper::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_128_1024_v2() -> BenchResult { - insert_blob_helper_v2::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_256_1024() -> BenchResult { - insert_blob_helper::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_256_1024_v2() -> BenchResult { - insert_blob_helper_v2::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_512_1024() -> BenchResult { - insert_blob_helper::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_512_1024_v2() -> BenchResult { - insert_blob_helper_v2::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_4() -> BenchResult { - insert_blob_helper::<1024, 4>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_4_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 4>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_8() -> BenchResult { - insert_blob_helper::<1024, 8>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_8_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 8>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_16() -> BenchResult { - insert_blob_helper::<1024, 16>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_16_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 16>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_32() -> BenchResult { - insert_blob_helper::<1024, 32>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_32_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 32>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_64() -> BenchResult { - insert_blob_helper::<1024, 64>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_64_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 64>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_128() -> BenchResult { - insert_blob_helper::<1024, 128>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_128_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 128>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_256() -> BenchResult { - insert_blob_helper::<1024, 256>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_256_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 256>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_512() -> BenchResult { - insert_blob_helper::<1024, 512>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_512_v2() -> BenchResult { - insert_blob_helper_v2::<1024, 512>() -} - -#[bench(raw)] -pub fn btreemap_insert_blob_1024_512_v2_mem_manager() -> BenchResult { - insert_blob_helper_v2_mem_manager::<1024, 512>() -} - -#[bench(raw)] -pub fn btreemap_insert_u64_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - insert_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_u64_u64_mem_manager() -> BenchResult { - let memory_manager = MemoryManager::init(DefaultMemoryImpl::default()); - let btree = BTreeMap::new(memory_manager.get(MemoryId::new(42))); - insert_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_u64_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - insert_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_u64_blob_8() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - insert_helper::>(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_u64_blob_8_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - insert_helper::>(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_blob_8_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - insert_helper::, u64>(btree) -} - -#[bench(raw)] -pub fn btreemap_insert_blob_8_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - insert_helper::, u64>(btree) +/// Helper macro to generate benchmarks. +macro_rules! bench_tests { + ($( $fn_name:ident, $helper:ident, $k:expr, $v:expr );+ $(;)?) => { + $( + #[bench(raw)] + pub fn $fn_name() -> BenchResult { + $helper::<$k, $v>() + } + )+ + }; +} + +type Blob4 = Blob<4>; +type Blob8 = Blob<8>; +type Blob16 = Blob<16>; +type Blob32 = Blob<32>; +type Blob64 = Blob<64>; +type Blob128 = Blob<128>; +type Blob256 = Blob<256>; +type Blob512 = Blob<512>; +type Blob1024 = Blob<1024>; + +// Benchmarks inserting blobs into a BTreeMap. +bench_tests! { + // K x 1024 + btreemap_insert_blob_4_1024, insert_helper_v1, Blob4, Blob1024; + btreemap_insert_blob_4_1024_v2, insert_helper_v2, Blob4, Blob1024; + btreemap_insert_blob_8_1024, insert_helper_v1, Blob8, Blob1024; + btreemap_insert_blob_8_1024_v2, insert_helper_v2, Blob8, Blob1024; + btreemap_insert_blob_16_1024, insert_helper_v1, Blob16, Blob1024; + btreemap_insert_blob_16_1024_v2, insert_helper_v2, Blob16, Blob1024; + btreemap_insert_blob_32_1024, insert_helper_v1, Blob32, Blob1024; + btreemap_insert_blob_32_1024_v2, insert_helper_v2, Blob32, Blob1024; + btreemap_insert_blob_64_1024, insert_helper_v1, Blob64, Blob1024; + btreemap_insert_blob_64_1024_v2, insert_helper_v2, Blob64, Blob1024; + btreemap_insert_blob_128_1024, insert_helper_v1, Blob128, Blob1024; + btreemap_insert_blob_128_1024_v2, insert_helper_v2, Blob128, Blob1024; + btreemap_insert_blob_256_1024, insert_helper_v1, Blob256, Blob1024; + btreemap_insert_blob_256_1024_v2, insert_helper_v2, Blob256, Blob1024; + btreemap_insert_blob_512_1024, insert_helper_v1, Blob512, Blob1024; + btreemap_insert_blob_512_1024_v2, insert_helper_v2, Blob512, Blob1024; + + // 1024 x V + btreemap_insert_blob_1024_4, insert_helper_v1, Blob1024, Blob4; + btreemap_insert_blob_1024_4_v2, insert_helper_v2, Blob1024, Blob4; + btreemap_insert_blob_1024_8, insert_helper_v1, Blob1024, Blob8; + btreemap_insert_blob_1024_8_v2, insert_helper_v2, Blob1024, Blob8; + btreemap_insert_blob_1024_16, insert_helper_v1, Blob1024, Blob16; + btreemap_insert_blob_1024_16_v2, insert_helper_v2, Blob1024, Blob16; + btreemap_insert_blob_1024_32, insert_helper_v1, Blob1024, Blob32; + btreemap_insert_blob_1024_32_v2, insert_helper_v2, Blob1024, Blob32; + btreemap_insert_blob_1024_64, insert_helper_v1, Blob1024, Blob64; + btreemap_insert_blob_1024_64_v2, insert_helper_v2, Blob1024, Blob64; + btreemap_insert_blob_1024_128, insert_helper_v1, Blob1024, Blob128; + btreemap_insert_blob_1024_128_v2, insert_helper_v2, Blob1024, Blob128; + btreemap_insert_blob_1024_256, insert_helper_v1, Blob1024, Blob256; + btreemap_insert_blob_1024_256_v2, insert_helper_v2, Blob1024, Blob256; + btreemap_insert_blob_1024_512, insert_helper_v1, Blob1024, Blob512; + btreemap_insert_blob_1024_512_v2, insert_helper_v2, Blob1024, Blob512; + btreemap_insert_blob_1024_512_v2_mem_manager, insert_helper_v2_mem_manager, Blob1024, Blob512; + + btreemap_insert_u64_u64, insert_helper_v1, u64, u64; + btreemap_insert_u64_u64_v2, insert_helper_v2, u64, u64; + btreemap_insert_u64_u64_v2_mem_manager, insert_helper_v2_mem_manager, u64, u64; + + btreemap_insert_u64_blob_8, insert_helper_v1, u64, Blob8; + btreemap_insert_u64_blob_8_v2, insert_helper_v2, u64, Blob8; + btreemap_insert_blob_8_u64, insert_helper_v1, Blob8, u64; + btreemap_insert_blob_8_u64_v2, insert_helper_v2, Blob8, u64; +} + +// Benchmarks removing keys from a BTreeMap. +bench_tests! { + // K x 1024 + btreemap_remove_blob_4_1024, remove_helper_v1, Blob4, Blob1024; + btreemap_remove_blob_4_1024_v2, remove_helper_v2, Blob4, Blob1024; + btreemap_remove_blob_8_1024, remove_helper_v1, Blob8, Blob1024; + btreemap_remove_blob_8_1024_v2, remove_helper_v2, Blob8, Blob1024; + btreemap_remove_blob_16_1024, remove_helper_v1, Blob16, Blob1024; + btreemap_remove_blob_16_1024_v2, remove_helper_v2, Blob16, Blob1024; + btreemap_remove_blob_32_1024, remove_helper_v1, Blob32, Blob1024; + btreemap_remove_blob_32_1024_v2, remove_helper_v2, Blob32, Blob1024; + btreemap_remove_blob_64_1024, remove_helper_v1, Blob64, Blob1024; + btreemap_remove_blob_64_1024_v2, remove_helper_v2, Blob64, Blob1024; + btreemap_remove_blob_128_1024, remove_helper_v1, Blob128, Blob1024; + btreemap_remove_blob_128_1024_v2, remove_helper_v2, Blob128, Blob1024; + btreemap_remove_blob_256_1024, remove_helper_v1, Blob256, Blob1024; + btreemap_remove_blob_256_1024_v2, remove_helper_v2, Blob256, Blob1024; + btreemap_remove_blob_512_1024, remove_helper_v1, Blob512, Blob1024; + btreemap_remove_blob_512_1024_v2, remove_helper_v2, Blob512, Blob1024; + + btreemap_remove_u64_u64, remove_helper_v1, u64, u64; + btreemap_remove_u64_u64_v2, remove_helper_v2, u64, u64; + + btreemap_remove_u64_blob_8, remove_helper_v1, u64, Blob8; + btreemap_remove_u64_blob_8_v2, remove_helper_v2, u64, Blob8; + btreemap_remove_blob_8_u64, remove_helper_v1, Blob8, u64; + btreemap_remove_blob_8_u64_v2, remove_helper_v2, Blob8, u64; +} + +// Benchmarks getting keys from a BTreeMap. +bench_tests! { + // K x 1024 + btreemap_get_blob_4_1024, get_helper_v1, Blob4, Blob1024; + btreemap_get_blob_4_1024_v2, get_helper_v2, Blob4, Blob1024; + btreemap_get_blob_8_1024, get_helper_v1, Blob8, Blob1024; + btreemap_get_blob_8_1024_v2, get_helper_v2, Blob8, Blob1024; + btreemap_get_blob_16_1024, get_helper_v1, Blob16, Blob1024; + btreemap_get_blob_16_1024_v2, get_helper_v2, Blob16, Blob1024; + btreemap_get_blob_32_1024, get_helper_v1, Blob32, Blob1024; + btreemap_get_blob_32_1024_v2, get_helper_v2, Blob32, Blob1024; + btreemap_get_blob_64_1024, get_helper_v1, Blob64, Blob1024; + btreemap_get_blob_64_1024_v2, get_helper_v2, Blob64, Blob1024; + btreemap_get_blob_128_1024, get_helper_v1, Blob128, Blob1024; + btreemap_get_blob_128_1024_v2, get_helper_v2, Blob128, Blob1024; + btreemap_get_blob_256_1024, get_helper_v1, Blob256, Blob1024; + btreemap_get_blob_256_1024_v2, get_helper_v2, Blob256, Blob1024; + btreemap_get_blob_512_1024, get_helper_v1, Blob512, Blob1024; + btreemap_get_blob_512_1024_v2, get_helper_v2, Blob512, Blob1024; + btreemap_get_blob_512_1024_v2_mem_manager, get_helper_v2_mem_manager, Blob512, Blob1024; + + btreemap_get_u64_u64, get_helper_v1, u64, u64; + btreemap_get_u64_u64_v2, get_helper_v2, u64, u64; + btreemap_get_u64_u64_v2_mem_manager, get_helper_v2_mem_manager, u64, u64; + + btreemap_get_u64_blob_8, get_helper_v1, u64, Blob8; + btreemap_get_u64_blob_8_v2, get_helper_v2, u64, Blob8; + btreemap_get_blob_8_u64, get_helper_v1, Blob8, u64; + btreemap_get_blob_8_u64_v2, get_helper_v2, Blob8, u64; +} + +// Benchmarks `contains_key` of a BTreeMap. +bench_tests! { + btreemap_contains_key_blob_4_1024, contains_key_helper_v1, Blob4, Blob1024; + btreemap_contains_key_blob_4_1024_v2, contains_key_helper_v2, Blob4, Blob1024; } #[bench(raw)] @@ -229,10 +158,8 @@ pub fn btreemap_insert_10mib_values() -> BenchResult { } bench_fn(|| { - let mut i = 0u64; - for value in values { - btree.insert(i, value); - i += 1; + for (i, value) in values.into_iter().enumerate() { + btree.insert(i as u32, value); } }) } @@ -365,264 +292,22 @@ pub fn btreemap_iter_count_10mib_values() -> BenchResult { }) } -/// Benchmarks removing keys from a BTreeMap. -#[bench(raw)] -pub fn btreemap_remove_blob_4_1024() -> BenchResult { - remove_blob_helper::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_4_1024_v2() -> BenchResult { - remove_blob_helper_v2::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_8_1024() -> BenchResult { - remove_blob_helper::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_8_1024_v2() -> BenchResult { - remove_blob_helper_v2::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_16_1024() -> BenchResult { - remove_blob_helper::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_16_1024_v2() -> BenchResult { - remove_blob_helper_v2::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_32_1024() -> BenchResult { - remove_blob_helper::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_32_1024_v2() -> BenchResult { - remove_blob_helper_v2::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_64_1024() -> BenchResult { - remove_blob_helper::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_64_1024_v2() -> BenchResult { - remove_blob_helper_v2::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_128_1024() -> BenchResult { - remove_blob_helper::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_128_1024_v2() -> BenchResult { - remove_blob_helper_v2::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_256_1024() -> BenchResult { - remove_blob_helper::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_256_1024_v2() -> BenchResult { - remove_blob_helper_v2::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_512_1024() -> BenchResult { - remove_blob_helper::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_blob_512_1024_v2() -> BenchResult { - remove_blob_helper_v2::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_remove_u64_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - remove_helper::(btree) -} -#[bench(raw)] -pub fn btreemap_remove_u64_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - remove_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_remove_u64_blob_8() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - remove_helper::>(btree) -} -#[bench(raw)] -pub fn btreemap_remove_u64_blob_8_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - remove_helper::>(btree) -} - -#[bench(raw)] -pub fn btreemap_remove_blob_8_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - remove_helper::, u64>(btree) -} -#[bench(raw)] -pub fn btreemap_remove_blob_8_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - remove_helper::, u64>(btree) -} - -/// Benchmarks getting keys from a BTreeMap. -#[bench(raw)] -pub fn btreemap_get_blob_4_1024() -> BenchResult { - get_blob_helper::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_4_1024_v2() -> BenchResult { - get_blob_helper_v2::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_8_1024() -> BenchResult { - get_blob_helper::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_8_1024_v2() -> BenchResult { - get_blob_helper_v2::<8, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_16_1024() -> BenchResult { - get_blob_helper::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_16_1024_v2() -> BenchResult { - get_blob_helper_v2::<16, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_32_1024() -> BenchResult { - get_blob_helper::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_32_1024_v2() -> BenchResult { - get_blob_helper_v2::<32, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_64_1024() -> BenchResult { - get_blob_helper::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_64_1024_v2() -> BenchResult { - get_blob_helper_v2::<64, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_128_1024() -> BenchResult { - get_blob_helper::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_128_1024_v2() -> BenchResult { - get_blob_helper_v2::<128, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_256_1024() -> BenchResult { - get_blob_helper::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_256_1024_v2() -> BenchResult { - get_blob_helper_v2::<256, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_512_1024() -> BenchResult { - get_blob_helper::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_512_1024_v2() -> BenchResult { - get_blob_helper_v2::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_blob_512_1024_v2_mem_manager() -> BenchResult { - get_blob_helper_v2_mem_manager::<512, 1024>() -} - -#[bench(raw)] -pub fn btreemap_get_u64_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - get_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_get_u64_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - get_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_get_u64_u64_v2_mem_manager() -> BenchResult { - let memory_manager = MemoryManager::init(DefaultMemoryImpl::default()); - let btree = BTreeMap::new(memory_manager.get(MemoryId::new(42))); - get_helper::(btree) -} - -#[bench(raw)] -pub fn btreemap_get_u64_blob_8() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - get_helper::>(btree) -} - -#[bench(raw)] -pub fn btreemap_get_u64_blob_8_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - get_helper::>(btree) -} - -#[bench(raw)] -pub fn btreemap_get_blob_8_u64() -> BenchResult { - let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - get_helper::, u64>(btree) -} - -#[bench(raw)] -pub fn btreemap_get_blob_8_u64_v2() -> BenchResult { - let btree = BTreeMap::new(DefaultMemoryImpl::default()); - get_helper::, u64>(btree) -} - // Profiles inserting a large number of random blobs into a btreemap. -fn insert_blob_helper() -> BenchResult { +fn insert_helper_v1() -> BenchResult { let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - insert_helper::, Blob>(btree) + insert_helper::(btree) } -fn insert_blob_helper_v2() -> BenchResult { +fn insert_helper_v2() -> BenchResult { let btree = BTreeMap::new(DefaultMemoryImpl::default()); - insert_helper::, Blob>(btree) + insert_helper::(btree) } -fn insert_blob_helper_v2_mem_manager() -> BenchResult { +fn insert_helper_v2_mem_manager( +) -> BenchResult { let memory_manager = MemoryManager::init(DefaultMemoryImpl::default()); let btree = BTreeMap::new(memory_manager.get(MemoryId::new(42))); - insert_helper::, Blob>(btree) + insert_helper::(btree) } // Profiles inserting a large number of random blobs into a btreemap. @@ -665,20 +350,21 @@ fn iter_helper(size: u32, value_size: u32, iter_type: IterType) -> BenchResult { } // Profiles getting a large number of random blobs from a btreemap. -fn get_blob_helper() -> BenchResult { +fn get_helper_v1() -> BenchResult { let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - get_helper::, Blob>(btree) + get_helper::(btree) } -fn get_blob_helper_v2() -> BenchResult { +fn get_helper_v2() -> BenchResult { let btree = BTreeMap::new(DefaultMemoryImpl::default()); - get_helper::, Blob>(btree) + get_helper::(btree) } -fn get_blob_helper_v2_mem_manager() -> BenchResult { +fn get_helper_v2_mem_manager( +) -> BenchResult { let memory_manager = MemoryManager::init(DefaultMemoryImpl::default()); let btree = BTreeMap::new(memory_manager.get(MemoryId::new(42))); - get_helper::, Blob>(btree) + get_helper::(btree) } fn get_helper( @@ -707,26 +393,17 @@ fn get_helper( }) } -/// Benchmarks `contains_key` of a BTreeMap. -#[bench(raw)] -pub fn btreemap_contains_key_blob_4_1024() -> BenchResult { - contains_key_blob_helper::<4, 1024>() -} - -#[bench(raw)] -pub fn btreemap_contains_key_blob_4_1024_v2() -> BenchResult { - contains_key_blob_helper_v2::<4, 1024>() -} - // Profiles `contains_key` on a large number of random blobs from a btreemap. -fn contains_key_blob_helper() -> BenchResult { +fn contains_key_helper_v1() -> BenchResult +{ let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - contains_key_helper::, Blob>(btree) + contains_key_helper::(btree) } -fn contains_key_blob_helper_v2() -> BenchResult { +fn contains_key_helper_v2() -> BenchResult +{ let btree = BTreeMap::new(DefaultMemoryImpl::default()); - contains_key_helper::, Blob>(btree) + contains_key_helper::(btree) } fn contains_key_helper( @@ -756,14 +433,14 @@ fn contains_key_helper } // Inserts a large number of random blobs into a btreemap, then profiles removing them. -fn remove_blob_helper() -> BenchResult { +fn remove_helper_v1() -> BenchResult { let btree = BTreeMap::new_v1(DefaultMemoryImpl::default()); - remove_helper::, Blob>(btree) + remove_helper::(btree) } -fn remove_blob_helper_v2() -> BenchResult { +fn remove_helper_v2() -> BenchResult { let btree = BTreeMap::new(DefaultMemoryImpl::default()); - remove_helper::, Blob>(btree) + remove_helper::(btree) } fn remove_helper( diff --git a/canbench_results.yml b/canbench_results.yml index e68ce309..fd1265e1 100644 --- a/canbench_results.yml +++ b/canbench_results.yml @@ -389,18 +389,18 @@ benches: heap_increase: 0 stable_memory_increase: 7 scopes: {} - btreemap_insert_u64_u64_mem_manager: - total: - instructions: 558130823 - heap_increase: 0 - stable_memory_increase: 0 - scopes: {} btreemap_insert_u64_u64_v2: total: instructions: 428895247 heap_increase: 0 stable_memory_increase: 6 scopes: {} + btreemap_insert_u64_u64_v2_mem_manager: + total: + instructions: 558130823 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} btreemap_iter_10mib_values: total: instructions: 11407378