refactor(chain): KeychainTxOutIndex use HashMap for fields

Instead of `BTreeMap` which is less performant.
This commit is contained in:
志宇 2024-06-12 19:10:52 +08:00
parent 4d3846abf4
commit c77e12bae7
No known key found for this signature in database
GPG Key ID: F6345C9837C2BDE8

View File

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