mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
perf: remove empty HashMap instances from TrieUpdates and HashedPostState (#13976)
This commit is contained in:
@ -76,6 +76,9 @@ impl TrieUpdates {
|
||||
hashed_address: B256,
|
||||
storage_updates: StorageTrieUpdates,
|
||||
) {
|
||||
if storage_updates.is_empty() {
|
||||
return;
|
||||
}
|
||||
let existing = self.storage_tries.insert(hashed_address, storage_updates);
|
||||
debug_assert!(existing.is_none());
|
||||
}
|
||||
|
||||
@ -48,7 +48,9 @@ impl HashedPostState {
|
||||
let mut storages = HashMap::with_capacity_and_hasher(hashed.len(), Default::default());
|
||||
for (address, (account, storage)) in hashed {
|
||||
accounts.insert(address, account);
|
||||
storages.insert(address, storage);
|
||||
if !storage.is_empty() {
|
||||
storages.insert(address, storage);
|
||||
}
|
||||
}
|
||||
Self { accounts, storages }
|
||||
}
|
||||
@ -193,6 +195,11 @@ impl HashedStorage {
|
||||
Self { wiped, storage: HashMap::default() }
|
||||
}
|
||||
|
||||
/// Check if self is empty.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
!self.wiped && self.storage.is_empty()
|
||||
}
|
||||
|
||||
/// Create new hashed storage from iterator.
|
||||
pub fn from_iter(wiped: bool, iter: impl IntoIterator<Item = (B256, U256)>) -> Self {
|
||||
Self { wiped, storage: HashMap::from_iter(iter) }
|
||||
|
||||
Reference in New Issue
Block a user