diff --git a/benchmarks/src/btreeset.rs b/benchmarks/src/btreeset.rs new file mode 100644 index 00000000..b02cc11a --- /dev/null +++ b/benchmarks/src/btreeset.rs @@ -0,0 +1,306 @@ +use canbench_rs::{bench, bench_fn, BenchResult}; +use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; +use ic_stable_structures::storable::Blob; +use ic_stable_structures::{btreeset::BTreeSet, DefaultMemoryImpl, Storable}; + +// Define type alias for Blob<8>. +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>; + +/// Helper macro to generate benchmarks. +macro_rules! bench_tests { + ($( $fn_name:ident, $helper:ident, $k:expr );+ $(;)?) => { + $( + #[bench(raw)] + pub fn $fn_name() -> BenchResult { + $helper::<$k>() + } + )+ + }; +} +// Profiles inserting a large number of keys into a BTreeSet. +fn insert_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let num_keys = 10_000; + + bench_fn(|| { + for i in 0..num_keys { + let key = generate_key::(i); + btreeset.insert(key); + } + }) +} + +// Profiles removing a large number of keys from a BTreeSet. +fn remove_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let num_keys = 10_000; + + for i in 0..num_keys { + btreeset.insert(generate_key::(i)); + } + + bench_fn(|| { + for i in 0..num_keys { + let key = generate_key::(i); + btreeset.remove(&key); + } + }) +} + +// Profiles iterating over a BTreeSet. +fn iter_helper() -> BenchResult { + let mut btreeset = BTreeSet::new(DefaultMemoryImpl::default()); + + for i in 0..10_000 { + btreeset.insert(generate_key::(i)); + } + + bench_fn(|| for _ in btreeset.iter() {}) +} + +// Profiles range queries on a BTreeSet. +fn range_helper() -> BenchResult { + let mut btreeset = BTreeSet::new(DefaultMemoryImpl::default()); + + for i in 0..10_000 { + btreeset.insert(generate_key::(i)); + } + + let start = generate_key::(2000); + let end = generate_key::(8000); + + bench_fn(|| for _ in btreeset.range(start..end) {}) +} + +// Profiles the union operation on two BTreeSets. +fn union_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i)); + } + } + + bench_fn(|| for _ in btreeset1.union(&btreeset2) {}) +} + +// Profiles the intersection operation on two BTreeSets. +fn intersection_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i)); + } + } + + bench_fn(|| for _ in btreeset1.intersection(&btreeset2) {}) +} + +// Profiles the symmetric difference operation on two BTreeSets. +fn symmetric_difference_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i)); + } + } + + bench_fn(|| for _ in btreeset1.symmetric_difference(&btreeset2) {}) +} + +// Profiles the is_subset operation on two BTreeSets. +fn is_subset_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i)); + } + } + + bench_fn(|| { + let _ = btreeset1.is_subset(&btreeset2); + }) +} + +// Profiles the is_superset operation on two BTreeSets. +fn is_superset_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i)); + } + } + + bench_fn(|| { + let _ = btreeset1.is_superset(&btreeset2); + }) +} + +// Profiles the is_disjoint operation on two BTreeSets. +fn is_disjoint_helper() -> BenchResult { + let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + let mut btreeset1 = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + let mut btreeset2 = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); + let num_keys = 1_000; + + for i in 0..num_keys { + btreeset1.insert(generate_key::(i)); + if i % 2 == 0 { + btreeset2.insert(generate_key::(i + num_keys)); // Ensure disjoint sets + } + } + + bench_fn(|| { + let _ = btreeset1.is_disjoint(&btreeset2); + }) +} + +// Generates keys directly based on the type `K`. +fn generate_key(i: u32) -> K { + let bytes = i.to_be_bytes(); + let padded_bytes = { + let mut buffer = vec![0; K::BOUND.max_size() as usize]; + buffer[..bytes.len()].copy_from_slice(&bytes); + buffer + }; + K::from_bytes(std::borrow::Cow::Owned(padded_bytes)) +} + +// Add benchmarks for insert, remove, and range with additional key types. +bench_tests! { + btreeset_insert_u32, insert_helper, u32; + btreeset_insert_u64, insert_helper, u64; + btreeset_insert_blob_8, insert_helper, Blob8; + btreeset_insert_blob_16, insert_helper, Blob16; + btreeset_insert_blob_32, insert_helper, Blob32; + btreeset_insert_blob_64, insert_helper, Blob64; + btreeset_insert_blob_128, insert_helper, Blob128; + btreeset_insert_blob_256, insert_helper, Blob256; + btreeset_insert_blob_512, insert_helper, Blob512; + btreeset_insert_blob_1024, insert_helper, Blob1024; + + btreeset_remove_u32, remove_helper, u32; + btreeset_remove_u64, remove_helper, u64; + btreeset_remove_blob_8, remove_helper, Blob8; + btreeset_remove_blob_16, remove_helper, Blob16; + btreeset_remove_blob_32, remove_helper, Blob32; + btreeset_remove_blob_64, remove_helper, Blob64; + btreeset_remove_blob_128, remove_helper, Blob128; + btreeset_remove_blob_256, remove_helper, Blob256; + btreeset_remove_blob_512, remove_helper, Blob512; + btreeset_remove_blob_1024, remove_helper, Blob1024; + + btreeset_range_u32, range_helper, u32; + btreeset_range_u64, range_helper, u64; + btreeset_range_blob_8, range_helper, Blob8; + btreeset_range_blob_16, range_helper, Blob16; + btreeset_range_blob_32, range_helper, Blob32; + btreeset_range_blob_64, range_helper, Blob64; + btreeset_range_blob_128, range_helper, Blob128; + btreeset_range_blob_256, range_helper, Blob256; + btreeset_range_blob_512, range_helper, Blob512; + btreeset_range_blob_1024, range_helper, Blob1024; +} + +// Add benchmarks for set operations with additional key types. +bench_tests! { + btreeset_union_u32, union_helper, u32; + btreeset_union_u64, union_helper, u64; + btreeset_union_blob_8, union_helper, Blob8; + btreeset_union_blob_16, union_helper, Blob16; + btreeset_union_blob_32, union_helper, Blob32; + btreeset_union_blob_64, union_helper, Blob64; + btreeset_union_blob_128, union_helper, Blob128; + btreeset_union_blob_256, union_helper, Blob256; + btreeset_union_blob_512, union_helper, Blob512; + btreeset_union_blob_1024, union_helper, Blob1024; + + btreeset_intersection_u32, intersection_helper, u32; + btreeset_intersection_u64, intersection_helper, u64; + btreeset_intersection_blob_8, intersection_helper, Blob8; + btreeset_intersection_blob_16, intersection_helper, Blob16; + btreeset_intersection_blob_32, intersection_helper, Blob32; + btreeset_intersection_blob_64, intersection_helper, Blob64; + btreeset_intersection_blob_128, intersection_helper, Blob128; + btreeset_intersection_blob_256, intersection_helper, Blob256; + btreeset_intersection_blob_512, intersection_helper, Blob512; + btreeset_intersection_blob_1024, intersection_helper, Blob1024; + + btreeset_symmetric_difference_u32, symmetric_difference_helper, u32; + btreeset_symmetric_difference_u64, symmetric_difference_helper, u64; + btreeset_symmetric_difference_blob_8, symmetric_difference_helper, Blob8; + btreeset_symmetric_difference_blob_16, symmetric_difference_helper, Blob16; + btreeset_symmetric_difference_blob_32, symmetric_difference_helper, Blob32; + btreeset_symmetric_difference_blob_64, symmetric_difference_helper, Blob64; + btreeset_symmetric_difference_blob_128, symmetric_difference_helper, Blob128; + btreeset_symmetric_difference_blob_256, symmetric_difference_helper, Blob256; + btreeset_symmetric_difference_blob_512, symmetric_difference_helper, Blob512; + btreeset_symmetric_difference_blob_1024, symmetric_difference_helper, Blob1024; + + btreeset_is_subset_u32, is_subset_helper, u32; + btreeset_is_subset_u64, is_subset_helper, u64; + btreeset_is_subset_blob_8, is_subset_helper, Blob8; + btreeset_is_subset_blob_16, is_subset_helper, Blob16; + btreeset_is_subset_blob_32, is_subset_helper, Blob32; + btreeset_is_subset_blob_64, is_subset_helper, Blob64; + btreeset_is_subset_blob_128, is_subset_helper, Blob128; + btreeset_is_subset_blob_256, is_subset_helper, Blob256; + btreeset_is_subset_blob_512, is_subset_helper, Blob512; + btreeset_is_subset_blob_1024, is_subset_helper, Blob1024; + + btreeset_is_superset_u32, is_superset_helper, u32; + btreeset_is_superset_u64, is_superset_helper, u64; + btreeset_is_superset_blob_8, is_superset_helper, Blob8; + btreeset_is_superset_blob_16, is_superset_helper, Blob16; + btreeset_is_superset_blob_32, is_superset_helper, Blob32; + btreeset_is_superset_blob_64, is_superset_helper, Blob64; + btreeset_is_superset_blob_128, is_superset_helper, Blob128; + btreeset_is_superset_blob_256, is_superset_helper, Blob256; + btreeset_is_superset_blob_512, is_superset_helper, Blob512; + btreeset_is_superset_blob_1024, is_superset_helper, Blob1024; + + btreeset_is_disjoint_u32, is_disjoint_helper, u32; + btreeset_is_disjoint_u64, is_disjoint_helper, u64; + btreeset_is_disjoint_blob_8, is_disjoint_helper, Blob8; + btreeset_is_disjoint_blob_16, is_disjoint_helper, Blob16; + btreeset_is_disjoint_blob_32, is_disjoint_helper, Blob32; + btreeset_is_disjoint_blob_64, is_disjoint_helper, Blob64; + btreeset_is_disjoint_blob_128, is_disjoint_helper, Blob128; + btreeset_is_disjoint_blob_256, is_disjoint_helper, Blob256; + btreeset_is_disjoint_blob_512, is_disjoint_helper, Blob512; + btreeset_is_disjoint_blob_1024, is_disjoint_helper, Blob1024; +} diff --git a/benchmarks/src/main.rs b/benchmarks/src/main.rs index 723976b5..e3f7adba 100644 --- a/benchmarks/src/main.rs +++ b/benchmarks/src/main.rs @@ -2,6 +2,7 @@ use ic_stable_structures::storable::{Blob, Storable}; use tiny_rng::{Rand, Rng}; mod btreemap; +mod btreeset; mod memory_manager; mod vec; diff --git a/canbench_results.yml b/canbench_results.yml index fd1265e1..ff1534a6 100644 --- a/canbench_results.yml +++ b/canbench_results.yml @@ -151,253 +151,253 @@ benches: scopes: {} btreemap_get_u64_u64_v2_mem_manager: total: - instructions: 336179948 + instructions: 336201049 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_insert_10mib_values: total: - instructions: 5239421355 + instructions: 5235943964 heap_increase: 0 stable_memory_increase: 3613 scopes: {} btreemap_insert_blob_1024_128: total: - instructions: 5110664101 + instructions: 5110208596 heap_increase: 0 stable_memory_increase: 262 scopes: {} btreemap_insert_blob_1024_128_v2: total: - instructions: 5201936582 + instructions: 5201453103 heap_increase: 0 stable_memory_increase: 196 scopes: {} btreemap_insert_blob_1024_16: total: - instructions: 5113272660 + instructions: 5112815041 heap_increase: 0 stable_memory_increase: 241 scopes: {} btreemap_insert_blob_1024_16_v2: total: - instructions: 5200160649 + instructions: 5199674900 heap_increase: 0 stable_memory_increase: 181 scopes: {} btreemap_insert_blob_1024_256: total: - instructions: 5132006019 + instructions: 5131549885 heap_increase: 0 stable_memory_increase: 292 scopes: {} btreemap_insert_blob_1024_256_v2: total: - instructions: 5225716019 + instructions: 5225231851 heap_increase: 0 stable_memory_increase: 219 scopes: {} btreemap_insert_blob_1024_32: total: - instructions: 5096510160 + instructions: 5096055372 heap_increase: 0 stable_memory_increase: 239 scopes: {} btreemap_insert_blob_1024_32_v2: total: - instructions: 5194736210 + instructions: 5194253458 heap_increase: 0 stable_memory_increase: 180 scopes: {} btreemap_insert_blob_1024_4: total: - instructions: 5019310618 + instructions: 5018854337 heap_increase: 0 stable_memory_increase: 235 scopes: {} btreemap_insert_blob_1024_4_v2: total: - instructions: 5098222305 + instructions: 5097737993 heap_increase: 0 stable_memory_increase: 176 scopes: {} btreemap_insert_blob_1024_512: total: - instructions: 5206323531 + instructions: 5205867927 heap_increase: 0 stable_memory_increase: 348 scopes: {} btreemap_insert_blob_1024_512_v2: total: - instructions: 5305867254 + instructions: 5305383658 heap_increase: 0 stable_memory_increase: 261 scopes: {} btreemap_insert_blob_1024_512_v2_mem_manager: total: - instructions: 5474908000 + instructions: 5474930165 heap_increase: 0 stable_memory_increase: 256 scopes: {} btreemap_insert_blob_1024_64: total: - instructions: 5150175789 + instructions: 5149718331 heap_increase: 0 stable_memory_increase: 250 scopes: {} btreemap_insert_blob_1024_64_v2: total: - instructions: 5249105297 + instructions: 5248619763 heap_increase: 0 stable_memory_increase: 188 scopes: {} btreemap_insert_blob_1024_8: total: - instructions: 5085348900 + instructions: 5084892196 heap_increase: 0 stable_memory_increase: 237 scopes: {} btreemap_insert_blob_1024_8_v2: total: - instructions: 5187558037 + instructions: 5187073266 heap_increase: 0 stable_memory_increase: 178 scopes: {} btreemap_insert_blob_128_1024: total: - instructions: 1273227463 + instructions: 1272772877 heap_increase: 0 stable_memory_increase: 260 scopes: {} btreemap_insert_blob_128_1024_v2: total: - instructions: 1373313309 + instructions: 1372830785 heap_increase: 0 stable_memory_increase: 195 scopes: {} btreemap_insert_blob_16_1024: total: - instructions: 637805470 + instructions: 637364739 heap_increase: 0 stable_memory_increase: 215 scopes: {} btreemap_insert_blob_16_1024_v2: total: - instructions: 732455990 + instructions: 731988002 heap_increase: 0 stable_memory_increase: 161 scopes: {} btreemap_insert_blob_256_1024: total: - instructions: 1859840193 + instructions: 1859383660 heap_increase: 0 stable_memory_increase: 292 scopes: {} btreemap_insert_blob_256_1024_v2: total: - instructions: 1957855803 + instructions: 1957371236 heap_increase: 0 stable_memory_increase: 219 scopes: {} btreemap_insert_blob_32_1024: total: - instructions: 672870979 + instructions: 672421098 heap_increase: 0 stable_memory_increase: 230 scopes: {} btreemap_insert_blob_32_1024_v2: total: - instructions: 770164792 + instructions: 769687261 heap_increase: 0 stable_memory_increase: 173 scopes: {} btreemap_insert_blob_4_1024: total: - instructions: 497280451 + instructions: 496883694 heap_increase: 0 stable_memory_increase: 123 scopes: {} btreemap_insert_blob_4_1024_v2: total: - instructions: 593852839 + instructions: 593431894 heap_increase: 0 stable_memory_increase: 92 scopes: {} btreemap_insert_blob_512_1024: total: - instructions: 3010795691 + instructions: 3010338689 heap_increase: 0 stable_memory_increase: 351 scopes: {} btreemap_insert_blob_512_1024_v2: total: - instructions: 3104696455 + instructions: 3104211395 heap_increase: 0 stable_memory_increase: 263 scopes: {} btreemap_insert_blob_64_1024: total: - instructions: 919935850 + instructions: 919481838 heap_increase: 0 stable_memory_increase: 245 scopes: {} btreemap_insert_blob_64_1024_v2: total: - instructions: 1015903332 + instructions: 1015421436 heap_increase: 0 stable_memory_increase: 183 scopes: {} btreemap_insert_blob_8_1024: total: - instructions: 607806777 + instructions: 607378399 heap_increase: 0 stable_memory_increase: 183 scopes: {} btreemap_insert_blob_8_1024_v2: total: - instructions: 709530767 + instructions: 709076147 heap_increase: 0 stable_memory_increase: 138 scopes: {} btreemap_insert_blob_8_u64: total: - instructions: 330300136 + instructions: 329873551 heap_increase: 0 stable_memory_increase: 6 scopes: {} btreemap_insert_blob_8_u64_v2: total: - instructions: 441129700 + instructions: 440675675 heap_increase: 0 stable_memory_increase: 4 scopes: {} btreemap_insert_u64_blob_8: total: - instructions: 339919034 + instructions: 339462677 heap_increase: 0 stable_memory_increase: 7 scopes: {} btreemap_insert_u64_blob_8_v2: total: - instructions: 420318618 + instructions: 419939413 heap_increase: 0 stable_memory_increase: 5 scopes: {} btreemap_insert_u64_u64: total: - instructions: 345460000 + instructions: 345002940 heap_increase: 0 stable_memory_increase: 7 scopes: {} btreemap_insert_u64_u64_v2: total: - instructions: 428895247 + instructions: 428515078 heap_increase: 0 stable_memory_increase: 6 scopes: {} btreemap_insert_u64_u64_v2_mem_manager: total: - instructions: 558130823 + instructions: 558164119 heap_increase: 0 stable_memory_increase: 0 scopes: {} @@ -475,133 +475,133 @@ benches: scopes: {} btreemap_remove_blob_128_1024: total: - instructions: 1574675940 + instructions: 1573792200 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_128_1024_v2: total: - instructions: 1717684218 + instructions: 1716743736 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_16_1024: total: - instructions: 758136944 + instructions: 757326760 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_16_1024_v2: total: - instructions: 895985762 + instructions: 895123692 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_256_1024: total: - instructions: 2279163553 + instructions: 2278298542 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_256_1024_v2: total: - instructions: 2417905594 + instructions: 2416985345 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_32_1024: total: - instructions: 827599093 + instructions: 826755315 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_32_1024_v2: total: - instructions: 966757633 + instructions: 965860176 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_4_1024: total: - instructions: 486469240 + instructions: 485954034 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_4_1024_v2: total: - instructions: 600093407 + instructions: 599545000 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_512_1024: total: - instructions: 3748993388 + instructions: 3748097654 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_512_1024_v2: total: - instructions: 3878241779 + instructions: 3877288524 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_64_1024: total: - instructions: 1141008090 + instructions: 1140140274 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_64_1024_v2: total: - instructions: 1280920638 + instructions: 1279997562 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_8_1024: total: - instructions: 644735138 + instructions: 644037226 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_8_1024_v2: total: - instructions: 776768069 + instructions: 776025360 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_8_u64: total: - instructions: 435032682 + instructions: 434301330 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_blob_8_u64_v2: total: - instructions: 584053097 + instructions: 583272063 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_u64_blob_8: total: - instructions: 485748982 + instructions: 484889538 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_u64_blob_8_v2: total: - instructions: 601012747 + instructions: 600284024 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_u64_u64: total: - instructions: 498934285 + instructions: 498062641 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreemap_remove_u64_u64_v2: total: - instructions: 623495817 + instructions: 622756312 heap_increase: 0 stable_memory_increase: 0 scopes: {} @@ -629,6 +629,546 @@ benches: heap_increase: 0 stable_memory_increase: 0 scopes: {} + btreeset_insert_blob_1024: + total: + instructions: 7121202218 + heap_increase: 1 + stable_memory_increase: 256 + scopes: {} + btreeset_insert_blob_128: + total: + instructions: 1615704617 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_16: + total: + instructions: 749432539 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_256: + total: + instructions: 2400798144 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_32: + total: + instructions: 813735184 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_512: + total: + instructions: 3973076549 + heap_increase: 0 + stable_memory_increase: 128 + scopes: {} + btreeset_insert_blob_64: + total: + instructions: 1134655719 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_8: + total: + instructions: 721302219 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_u32: + total: + instructions: 591672661 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_u64: + total: + instructions: 607184795 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_1024: + total: + instructions: 95684815 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_128: + total: + instructions: 16204332 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_16: + total: + instructions: 3889931 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_256: + total: + instructions: 27608774 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_32: + total: + instructions: 4494413 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_512: + total: + instructions: 50300628 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_64: + total: + instructions: 10215238 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_8: + total: + instructions: 3615630 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_u32: + total: + instructions: 2727512 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_u64: + total: + instructions: 2786132 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_1024: + total: + instructions: 44079981 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_128: + total: + instructions: 8205109 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_16: + total: + instructions: 2491891 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_256: + total: + instructions: 13343095 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_32: + total: + instructions: 2741733 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_512: + total: + instructions: 23588717 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_64: + total: + instructions: 5431620 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_8: + total: + instructions: 2394001 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_u32: + total: + instructions: 1844166 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_u64: + total: + instructions: 1884042 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_1024: + total: + instructions: 726291 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_128: + total: + instructions: 144346 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_16: + total: + instructions: 55017 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_256: + total: + instructions: 227475 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_32: + total: + instructions: 60297 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_512: + total: + instructions: 393747 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_64: + total: + instructions: 95742 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_8: + total: + instructions: 52930 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_u32: + total: + instructions: 45046 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_u64: + total: + instructions: 45581 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_1024: + total: + instructions: 78905951 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_128: + total: + instructions: 13776997 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_16: + total: + instructions: 3804356 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_256: + total: + instructions: 23129281 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_32: + total: + instructions: 4364940 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_512: + total: + instructions: 41720154 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_64: + total: + instructions: 8812620 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_8: + total: + instructions: 3555406 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_u32: + total: + instructions: 2728216 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_u64: + total: + instructions: 2783330 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_1024: + total: + instructions: 209987488 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_128: + total: + instructions: 38772226 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_16: + total: + instructions: 11709852 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_256: + total: + instructions: 63237253 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_32: + total: + instructions: 12870603 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_512: + total: + instructions: 112152224 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_64: + total: + instructions: 25289578 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_8: + total: + instructions: 11212342 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_u32: + total: + instructions: 8666520 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_u64: + total: + instructions: 8862543 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_1024: + total: + instructions: 7357420990 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_128: + total: + instructions: 1605616112 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_16: + total: + instructions: 733448698 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_256: + total: + instructions: 2419676955 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_32: + total: + instructions: 794480377 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_512: + total: + instructions: 4050817701 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_64: + total: + instructions: 1114964082 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_8: + total: + instructions: 706022078 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_u32: + total: + instructions: 574149464 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_u64: + total: + instructions: 591063762 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_1024: + total: + instructions: 95698971 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_128: + total: + instructions: 16207736 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_16: + total: + instructions: 3891585 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_256: + total: + instructions: 27613714 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_32: + total: + instructions: 4496111 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_512: + total: + instructions: 50308640 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_64: + total: + instructions: 10217874 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_8: + total: + instructions: 3617263 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_u32: + total: + instructions: 2743604 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_u64: + total: + instructions: 2792237 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_1024: + total: + instructions: 95699479 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_128: + total: + instructions: 16208244 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_16: + total: + instructions: 3892093 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_256: + total: + instructions: 27614222 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_32: + total: + instructions: 4496619 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_512: + total: + instructions: 50309148 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_64: + total: + instructions: 10218382 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_8: + total: + instructions: 3617771 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_u32: + total: + instructions: 2741110 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_u64: + total: + instructions: 2788745 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} memory_manager_baseline: total: instructions: 1176576907 @@ -637,61 +1177,61 @@ benches: scopes: {} memory_manager_grow: total: - instructions: 346600495 + instructions: 346536495 heap_increase: 2 stable_memory_increase: 32000 scopes: {} memory_manager_overhead: total: - instructions: 1181961433 + instructions: 1181962608 heap_increase: 0 stable_memory_increase: 8320 scopes: {} vec_get_blob_128: total: - instructions: 19306242 + instructions: 19216242 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_16: total: - instructions: 6402226 + instructions: 6432226 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_32: total: - instructions: 7121657 + instructions: 7151657 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_4: total: - instructions: 4849627 + instructions: 4869627 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_4_mem_manager: total: - instructions: 7216977 + instructions: 7236977 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_64: total: - instructions: 11370056 + instructions: 11320056 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_64_mem_manager: total: - instructions: 13710204 + instructions: 13640204 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_get_blob_8: total: - instructions: 5673873 + instructions: 5776205 heap_increase: 0 stable_memory_increase: 0 scopes: {} @@ -703,43 +1243,43 @@ benches: scopes: {} vec_insert_blob_128: total: - instructions: 4151425 + instructions: 4131425 heap_increase: 0 stable_memory_increase: 19 scopes: {} vec_insert_blob_16: total: - instructions: 3316228 + instructions: 3296228 heap_increase: 0 stable_memory_increase: 2 scopes: {} vec_insert_blob_32: total: - instructions: 3435468 + instructions: 3415468 heap_increase: 0 stable_memory_increase: 5 scopes: {} vec_insert_blob_4: total: - instructions: 3227469 + instructions: 3207469 heap_increase: 0 stable_memory_increase: 0 scopes: {} vec_insert_blob_64: total: - instructions: 3675805 + instructions: 3655805 heap_increase: 0 stable_memory_increase: 9 scopes: {} vec_insert_blob_8: total: - instructions: 3256890 + instructions: 3236890 heap_increase: 0 stable_memory_increase: 1 scopes: {} vec_insert_u64: total: - instructions: 5929433 + instructions: 5919433 heap_increase: 0 stable_memory_increase: 1 scopes: {}