From 8ffe6a097cdbf9d1b4bc28b8a42273584d43eacc Mon Sep 17 00:00:00 2001 From: Dragoljub Duric Date: Fri, 2 May 2025 09:30:05 +0000 Subject: [PATCH 1/5] . --- src/btreeset.rs | 142 ++++++++++++++++++++++++++++-------------------- 1 file changed, 84 insertions(+), 58 deletions(-) diff --git a/src/btreeset.rs b/src/btreeset.rs index 69b32066..ed2f5055 100644 --- a/src/btreeset.rs +++ b/src/btreeset.rs @@ -65,9 +65,10 @@ where /// ## Basic Usage /// /// ```rust -/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; +/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// -/// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); +/// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); +/// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// /// set.insert(42); /// assert!(set.contains(&42)); @@ -78,9 +79,10 @@ where /// ## Range Queries /// /// ```rust -/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; +/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// -/// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); +/// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); +/// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(1); /// set.insert(2); /// set.insert(3); @@ -94,7 +96,7 @@ where /// You can store custom types in a `BTreeSet` by implementing the `Storable` trait: /// /// ```rust -/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl, Storable}; +/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId, Storable}; /// use std::borrow::Cow; /// /// #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)] @@ -119,7 +121,8 @@ where /// }; /// } /// -/// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); +/// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); +/// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(CustomType { id: 42 }); /// assert!(set.contains(&CustomType { id: 42 })); /// ``` @@ -171,9 +174,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let set: BTreeSet = BTreeSet::init(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let set: BTreeSet = BTreeSet::init(mem_mgr.get(MemoryId::new(0))); /// ``` pub fn init(memory: M) -> Self { BTreeSet { @@ -186,9 +190,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// ``` pub fn new(memory: M) -> Self { BTreeSet { @@ -201,9 +206,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// /// // Save the set to memory @@ -228,9 +234,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// assert!(set.insert(42)); /// assert!(!set.insert(42)); // Key already exists /// ``` @@ -246,9 +253,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// assert!(set.contains(&42)); /// assert!(!set.contains(&7)); @@ -265,9 +273,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// assert!(set.is_empty()); /// ``` pub fn is_empty(&self) -> bool { @@ -282,9 +291,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// assert_eq!(set.len(), 2); @@ -298,9 +308,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// let memory = set.into_memory(); /// ``` pub fn into_memory(self) -> M { @@ -317,9 +328,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.clear(); /// assert!(set.is_empty()); @@ -337,9 +349,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// assert_eq!(set.first(), Some(7)); @@ -357,9 +370,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// assert_eq!(set.last(), Some(42)); @@ -376,9 +390,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// assert!(set.remove(&42)); /// assert!(!set.contains(&42)); @@ -395,9 +410,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// assert_eq!(set.pop_last(), Some(42)); @@ -414,9 +430,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// assert_eq!(set.pop_first(), Some(7)); @@ -433,9 +450,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(42); /// set.insert(7); /// for key in set.iter() { @@ -455,9 +473,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(1); /// set.insert(2); /// set.insert(3); @@ -477,9 +496,10 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); /// set.insert(1); /// set.insert(2); /// set.insert(3); @@ -503,10 +523,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); @@ -572,10 +593,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); @@ -630,10 +652,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); @@ -673,10 +696,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); @@ -736,10 +760,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); @@ -767,10 +792,11 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; /// - /// let mut set1: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); - /// let mut set2: BTreeSet = BTreeSet::new(DefaultMemoryImpl::default()); + /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); + /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); + /// let mut set2: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(1))); /// /// set1.insert(1); /// set1.insert(2); From 0efd64f8d55ff57ead7ed24ed7b538e38101fdb7 Mon Sep 17 00:00:00 2001 From: Dragoljub Duric Date: Fri, 2 May 2025 09:42:42 +0000 Subject: [PATCH 2/5] . --- src/btreeset.rs | 78 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 26 deletions(-) diff --git a/src/btreeset.rs b/src/btreeset.rs index ed2f5055..ebce52a3 100644 --- a/src/btreeset.rs +++ b/src/btreeset.rs @@ -65,7 +65,8 @@ where /// ## Basic Usage /// /// ```rust -/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; +/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; +/// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -79,7 +80,8 @@ where /// ## Range Queries /// /// ```rust -/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; +/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; +/// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -96,7 +98,8 @@ where /// You can store custom types in a `BTreeSet` by implementing the `Storable` trait: /// /// ```rust -/// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId, Storable}; +/// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl, Storable}; +/// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// use std::borrow::Cow; /// /// #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone)] @@ -174,7 +177,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let set: BTreeSet = BTreeSet::init(mem_mgr.get(MemoryId::new(0))); @@ -190,7 +194,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -206,7 +211,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -234,7 +240,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -253,7 +260,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -273,7 +281,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -291,7 +300,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -308,7 +318,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -328,7 +339,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -349,7 +361,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -370,7 +383,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -390,7 +404,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -410,7 +425,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -430,7 +446,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -450,7 +467,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -473,7 +491,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -496,7 +515,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -523,7 +543,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -593,7 +614,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -652,7 +674,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -696,7 +719,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -760,7 +784,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); @@ -792,7 +817,8 @@ where /// # Example /// /// ```rust - /// use ic_stable_structures::{BTreeSet, MemoryManager, MemoryId}; + /// use ic_stable_structures::{BTreeSet, DefaultMemoryImpl}; + /// use ic_stable_structures::memory_manager::{MemoryId, MemoryManager}; /// /// let mem_mgr = MemoryManager::init(DefaultMemoryImpl::default()); /// let mut set1: BTreeSet = BTreeSet::new(mem_mgr.get(MemoryId::new(0))); From cb30eb7704fd4f7808315c1070ce1224c49d643e Mon Sep 17 00:00:00 2001 From: Dragoljub Duric Date: Tue, 10 Jun 2025 13:40:15 +0000 Subject: [PATCH 3/5] Add benchmarks for btree set. --- benchmarks/Cargo.toml | 4 + benchmarks/btreeset/canbench.yml | 3 + benchmarks/btreeset/canbench_results.yml | 542 +++++++++++++++++++++++ benchmarks/btreeset/src/main.rs | 308 +++++++++++++ 4 files changed, 857 insertions(+) create mode 100644 benchmarks/btreeset/canbench.yml create mode 100644 benchmarks/btreeset/canbench_results.yml create mode 100644 benchmarks/btreeset/src/main.rs diff --git a/benchmarks/Cargo.toml b/benchmarks/Cargo.toml index d10b3c99..753b1972 100644 --- a/benchmarks/Cargo.toml +++ b/benchmarks/Cargo.toml @@ -33,3 +33,7 @@ path = "vec/src/main.rs" [[bin]] name = "compare" path = "compare/src/main.rs" + +[[bin]] +name = "btreeset" +path = "btreeset/src/main.rs" diff --git a/benchmarks/btreeset/canbench.yml b/benchmarks/btreeset/canbench.yml new file mode 100644 index 00000000..c6b0e533 --- /dev/null +++ b/benchmarks/btreeset/canbench.yml @@ -0,0 +1,3 @@ +build_cmd: cargo build -p benchmarks --release --target wasm32-unknown-unknown --locked + +wasm_path: ../../target/wasm32-unknown-unknown/release/btreeset.wasm diff --git a/benchmarks/btreeset/canbench_results.yml b/benchmarks/btreeset/canbench_results.yml new file mode 100644 index 00000000..5a5bb58c --- /dev/null +++ b/benchmarks/btreeset/canbench_results.yml @@ -0,0 +1,542 @@ +benches: + btreeset_insert_blob_1024: + total: + instructions: 7284080565 + heap_increase: 1 + stable_memory_increase: 256 + scopes: {} + btreeset_insert_blob_128: + total: + instructions: 1653845130 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_16: + total: + instructions: 739426203 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_256: + total: + instructions: 2458679213 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_32: + total: + instructions: 835827624 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_512: + total: + instructions: 4065944116 + heap_increase: 0 + stable_memory_increase: 128 + scopes: {} + btreeset_insert_blob_64: + total: + instructions: 998533884 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_blob_8: + total: + instructions: 717658594 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_u32: + total: + instructions: 571444780 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_insert_u64: + total: + instructions: 592008157 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_1024: + total: + instructions: 108714363 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_128: + total: + instructions: 18179210 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_16: + total: + instructions: 3644358 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_256: + total: + instructions: 31422737 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_32: + total: + instructions: 4919122 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_512: + total: + instructions: 57186120 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_64: + total: + instructions: 10294925 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_blob_8: + total: + instructions: 3388277 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_u32: + total: + instructions: 2490559 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_intersection_u64: + total: + instructions: 2508642 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_1024: + total: + instructions: 52536594 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_128: + total: + instructions: 9486846 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_16: + total: + instructions: 2340808 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_256: + total: + instructions: 15784551 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_32: + total: + instructions: 3007948 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_512: + total: + instructions: 28035524 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_64: + total: + instructions: 5457282 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_blob_8: + total: + instructions: 2249297 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_u32: + total: + instructions: 1690074 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_disjoint_u64: + total: + instructions: 1703526 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_1024: + total: + instructions: 384251 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_128: + total: + instructions: 89390 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_16: + total: + instructions: 54877 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_256: + total: + instructions: 131646 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_32: + total: + instructions: 46694 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_512: + total: + instructions: 215803 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_64: + total: + instructions: 57914 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_blob_8: + total: + instructions: 53244 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_u32: + total: + instructions: 44006 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_subset_u64: + total: + instructions: 44655 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_1024: + total: + instructions: 91977309 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_128: + total: + instructions: 15751329 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_16: + total: + instructions: 3563982 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_256: + total: + instructions: 26963809 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_32: + total: + instructions: 4788767 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_512: + total: + instructions: 48627619 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_64: + total: + instructions: 8891928 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_blob_8: + total: + instructions: 3333365 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_u32: + total: + instructions: 2489101 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_is_superset_u64: + total: + instructions: 2507547 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_1024: + total: + instructions: 261512517 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_128: + total: + instructions: 47149109 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_16: + total: + instructions: 11180850 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_256: + total: + instructions: 77944795 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_32: + total: + instructions: 15036515 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_512: + total: + instructions: 139231173 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_64: + total: + instructions: 26080306 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_blob_8: + total: + instructions: 10784216 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_u32: + total: + instructions: 8156558 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_range_u64: + total: + instructions: 8197398 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_1024: + total: + instructions: 7738691785 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_128: + total: + instructions: 1684725198 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_16: + total: + instructions: 731480473 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_256: + total: + instructions: 2547957346 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_32: + total: + instructions: 825242912 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_512: + total: + instructions: 4277405740 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_64: + total: + instructions: 1006778475 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_blob_8: + total: + instructions: 710163935 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_u32: + total: + instructions: 561839081 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_remove_u64: + total: + instructions: 586111205 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_1024: + total: + instructions: 108728489 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_128: + total: + instructions: 18182584 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_16: + total: + instructions: 3645982 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_256: + total: + instructions: 31427647 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_32: + total: + instructions: 4920790 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_512: + total: + instructions: 57194102 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_64: + total: + instructions: 10297531 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_blob_8: + total: + instructions: 3389880 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_u32: + total: + instructions: 2506667 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_symmetric_difference_u64: + total: + instructions: 2514727 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_1024: + total: + instructions: 108728997 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_128: + total: + instructions: 18183092 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_16: + total: + instructions: 3646490 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_256: + total: + instructions: 31428155 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_32: + total: + instructions: 4921298 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_512: + total: + instructions: 57194610 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_64: + total: + instructions: 10298039 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_blob_8: + total: + instructions: 3390388 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_u32: + total: + instructions: 2504174 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_union_u64: + total: + instructions: 2510237 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} +version: 0.1.11 diff --git a/benchmarks/btreeset/src/main.rs b/benchmarks/btreeset/src/main.rs new file mode 100644 index 00000000..5ce089f8 --- /dev/null +++ b/benchmarks/btreeset/src/main.rs @@ -0,0 +1,308 @@ +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; +} + +fn main() {} From eab71265a7e07fc9b7926a2426ac01d2fe7a0091 Mon Sep 17 00:00:00 2001 From: Dragoljub Duric Date: Tue, 10 Jun 2025 13:49:51 +0000 Subject: [PATCH 4/5] Add benchmarks for iteration on BTreeSet. --- benchmarks/btreeset/canbench_results.yml | 240 ++++++++++++++--------- benchmarks/btreeset/src/main.rs | 11 ++ 2 files changed, 161 insertions(+), 90 deletions(-) diff --git a/benchmarks/btreeset/canbench_results.yml b/benchmarks/btreeset/canbench_results.yml index 5a5bb58c..74202325 100644 --- a/benchmarks/btreeset/canbench_results.yml +++ b/benchmarks/btreeset/canbench_results.yml @@ -1,541 +1,601 @@ benches: btreeset_insert_blob_1024: total: - instructions: 7284080565 + instructions: 7284353843 heap_increase: 1 stable_memory_increase: 256 scopes: {} btreeset_insert_blob_128: total: - instructions: 1653845130 + instructions: 1654118408 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_blob_16: total: - instructions: 739426203 + instructions: 739699471 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_blob_256: total: - instructions: 2458679213 + instructions: 2458952491 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_blob_32: total: - instructions: 835827624 + instructions: 836100902 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_blob_512: total: - instructions: 4065944116 + instructions: 4066217394 heap_increase: 0 stable_memory_increase: 128 scopes: {} btreeset_insert_blob_64: total: - instructions: 998533884 + instructions: 998807162 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_blob_8: total: - instructions: 717658594 + instructions: 717903557 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_u32: total: - instructions: 571444780 + instructions: 571689723 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_insert_u64: total: - instructions: 592008157 + instructions: 592253100 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_1024: total: - instructions: 108714363 + instructions: 108717363 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_128: total: - instructions: 18179210 + instructions: 18182210 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_16: total: - instructions: 3644358 + instructions: 3647358 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_256: total: - instructions: 31422737 + instructions: 31425737 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_32: total: - instructions: 4919122 + instructions: 4922122 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_512: total: - instructions: 57186120 + instructions: 57189120 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_64: total: - instructions: 10294925 + instructions: 10297925 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_blob_8: total: - instructions: 3388277 + instructions: 3391277 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_u32: total: - instructions: 2490559 + instructions: 2493559 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_intersection_u64: total: - instructions: 2508642 + instructions: 2511642 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_1024: total: - instructions: 52536594 + instructions: 52538596 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_128: total: - instructions: 9486846 + instructions: 9488848 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_16: total: - instructions: 2340808 + instructions: 2342810 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_256: total: - instructions: 15784551 + instructions: 15786553 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_32: total: - instructions: 3007948 + instructions: 3009950 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_512: total: - instructions: 28035524 + instructions: 28037526 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_64: total: - instructions: 5457282 + instructions: 5459284 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_blob_8: total: - instructions: 2249297 + instructions: 2251299 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_u32: total: - instructions: 1690074 + instructions: 1692076 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_disjoint_u64: total: - instructions: 1703526 + instructions: 1705528 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_1024: total: - instructions: 384251 + instructions: 384259 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_128: total: - instructions: 89390 + instructions: 89398 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_16: total: - instructions: 54877 + instructions: 54885 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_256: total: - instructions: 131646 + instructions: 131654 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_32: total: - instructions: 46694 + instructions: 46702 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_512: total: - instructions: 215803 + instructions: 215811 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_64: total: - instructions: 57914 + instructions: 57922 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_blob_8: total: - instructions: 53244 + instructions: 53252 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_u32: total: - instructions: 44006 + instructions: 44014 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_subset_u64: total: - instructions: 44655 + instructions: 44663 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_1024: total: - instructions: 91977309 + instructions: 91980309 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_128: total: - instructions: 15751329 + instructions: 15754329 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_16: total: - instructions: 3563982 + instructions: 3566982 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_256: total: - instructions: 26963809 + instructions: 26966809 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_32: total: - instructions: 4788767 + instructions: 4791767 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_512: total: - instructions: 48627619 + instructions: 48630619 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_64: total: - instructions: 8891928 + instructions: 8894928 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_blob_8: total: - instructions: 3333365 + instructions: 3336365 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_u32: total: - instructions: 2489101 + instructions: 2492101 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_is_superset_u64: total: - instructions: 2507547 + instructions: 2510547 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_1024: + total: + instructions: 434481189 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_128: + total: + instructions: 77325848 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_16: + total: + instructions: 17483295 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_256: + total: + instructions: 129194395 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_32: + total: + instructions: 23951961 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_512: + total: + instructions: 230961189 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_64: + total: + instructions: 42333988 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_blob_8: + total: + instructions: 16825152 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_u32: + total: + instructions: 13506582 + heap_increase: 0 + stable_memory_increase: 0 + scopes: {} + btreeset_iter_u64: + total: + instructions: 13590626 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_1024: total: - instructions: 261512517 + instructions: 261524517 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_128: total: - instructions: 47149109 + instructions: 47161109 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_16: total: - instructions: 11180850 + instructions: 11192850 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_256: total: - instructions: 77944795 + instructions: 77956795 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_32: total: - instructions: 15036515 + instructions: 15048515 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_512: total: - instructions: 139231173 + instructions: 139243173 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_64: total: - instructions: 26080306 + instructions: 26092306 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_blob_8: total: - instructions: 10784216 + instructions: 10796216 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_u32: total: - instructions: 8156558 + instructions: 8168558 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_range_u64: total: - instructions: 8197398 + instructions: 8209398 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_1024: total: - instructions: 7738691785 + instructions: 7738925933 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_128: total: - instructions: 1684725198 + instructions: 1684959346 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_16: total: - instructions: 731480473 + instructions: 731714614 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_256: total: - instructions: 2547957346 + instructions: 2548191494 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_32: total: - instructions: 825242912 + instructions: 825477060 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_512: total: - instructions: 4277405740 + instructions: 4277639888 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_64: total: - instructions: 1006778475 + instructions: 1007012623 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_blob_8: total: - instructions: 710163935 + instructions: 710369771 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_u32: total: - instructions: 561839081 + instructions: 562044903 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_remove_u64: total: - instructions: 586111205 + instructions: 586317027 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_1024: total: - instructions: 108728489 + instructions: 108731489 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_128: total: - instructions: 18182584 + instructions: 18185584 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_16: total: - instructions: 3645982 + instructions: 3648982 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_256: total: - instructions: 31427647 + instructions: 31430647 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_32: total: - instructions: 4920790 + instructions: 4923790 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_512: total: - instructions: 57194102 + instructions: 57197102 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_64: total: - instructions: 10297531 + instructions: 10300531 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_blob_8: total: - instructions: 3389880 + instructions: 3392880 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_u32: total: - instructions: 2506667 + instructions: 2509667 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_symmetric_difference_u64: total: - instructions: 2514727 + instructions: 2517727 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_1024: total: - instructions: 108728997 + instructions: 108731997 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_128: total: - instructions: 18183092 + instructions: 18186092 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_16: total: - instructions: 3646490 + instructions: 3649490 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_256: total: - instructions: 31428155 + instructions: 31431155 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_32: total: - instructions: 4921298 + instructions: 4924298 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_512: total: - instructions: 57194610 + instructions: 57197610 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_64: total: - instructions: 10298039 + instructions: 10301039 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_blob_8: total: - instructions: 3390388 + instructions: 3393388 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_u32: total: - instructions: 2504174 + instructions: 2507174 heap_increase: 0 stable_memory_increase: 0 scopes: {} btreeset_union_u64: total: - instructions: 2510237 + instructions: 2513237 heap_increase: 0 stable_memory_increase: 0 scopes: {} diff --git a/benchmarks/btreeset/src/main.rs b/benchmarks/btreeset/src/main.rs index 5ce089f8..8fe2d39b 100644 --- a/benchmarks/btreeset/src/main.rs +++ b/benchmarks/btreeset/src/main.rs @@ -234,6 +234,17 @@ bench_tests! { btreeset_range_blob_256, range_helper, Blob256; btreeset_range_blob_512, range_helper, Blob512; btreeset_range_blob_1024, range_helper, Blob1024; + + btreeset_iter_u32, iter_helper, u32; + btreeset_iter_u64, iter_helper, u64; + btreeset_iter_blob_8, iter_helper, Blob8; + btreeset_iter_blob_16, iter_helper, Blob16; + btreeset_iter_blob_32, iter_helper, Blob32; + btreeset_iter_blob_64, iter_helper, Blob64; + btreeset_iter_blob_128, iter_helper, Blob128; + btreeset_iter_blob_256, iter_helper, Blob256; + btreeset_iter_blob_512, iter_helper, Blob512; + btreeset_iter_blob_1024, iter_helper, Blob1024; } // Add benchmarks for set operations with additional key types. From e40acaae2123fe26cd8882818130837ae614ce5e Mon Sep 17 00:00:00 2001 From: Dragoljub Duric Date: Tue, 10 Jun 2025 13:50:52 +0000 Subject: [PATCH 5/5] Remove an unnecessary comment. --- benchmarks/btreeset/src/main.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/benchmarks/btreeset/src/main.rs b/benchmarks/btreeset/src/main.rs index 8fe2d39b..ae2fa8e6 100644 --- a/benchmarks/btreeset/src/main.rs +++ b/benchmarks/btreeset/src/main.rs @@ -3,7 +3,6 @@ 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>;