]> Untitled Git - bdk/commitdiff
refactor(chain): `KeychainTxOutIndex` use `HashMap` for fields
author志宇 <hello@evanlinjin.me>
Wed, 12 Jun 2024 11:10:52 +0000 (19:10 +0800)
committer志宇 <hello@evanlinjin.me>
Thu, 13 Jun 2024 14:52:47 +0000 (22:52 +0800)
Instead of `BTreeMap` which is less performant.

crates/chain/src/keychain/txout_index.rs

index 252be639ef5d9b61ead6a629f166c9f8260b74b2..b8c0c45707e05bb865d7c3e1cb8bf7b34fd08fd5 100644 (file)
@@ -123,12 +123,12 @@ pub struct KeychainTxOutIndex<K> {
     /// keychain -> (descriptor id) map
     keychains_to_descriptor_ids: BTreeMap<K, DescriptorId>,
     /// descriptor id -> keychain map
-    descriptor_ids_to_keychains: BTreeMap<DescriptorId, K>,
+    descriptor_ids_to_keychains: HashMap<DescriptorId, K>,
     /// descriptor_id -> descriptor map
     /// This is a "monotone" map, meaning that its size keeps growing, i.e., we never delete
     /// descriptors from it. This is useful for revealing spks for descriptors that don't have
     /// keychains associated.
-    descriptor_ids_to_descriptors: BTreeMap<DescriptorId, Descriptor<DescriptorPublicKey>>,
+    descriptor_ids_to_descriptors: HashMap<DescriptorId, Descriptor<DescriptorPublicKey>>,
     /// last revealed indices for each descriptor.
     last_revealed: HashMap<DescriptorId, u32>,
     /// lookahead setting
@@ -201,8 +201,8 @@ impl<K> KeychainTxOutIndex<K> {
     pub fn new(lookahead: u32) -> Self {
         Self {
             inner: SpkTxOutIndex::default(),
-            keychains_to_descriptor_ids: BTreeMap::new(),
-            descriptor_ids_to_descriptors: BTreeMap::new(),
+            keychains_to_descriptor_ids: Default::default(),
+            descriptor_ids_to_descriptors: Default::default(),
             descriptor_ids_to_keychains: Default::default(),
             last_revealed: Default::default(),
             lookahead,