bench(trie): avoid unnecessary clones in hash builder repeated bench (#11827)

This commit is contained in:
Roman Krasiuk
2024-10-17 12:27:57 +02:00
committed by GitHub
parent bac244ae97
commit 4254b80a89

View File

@ -90,12 +90,23 @@ pub fn calculate_root_from_leaves_repeated(c: &mut Criterion) {
},
|(init_storage, storage_updates, mut trie_updates)| {
let mut storage = init_storage;
for update in storage_updates {
let mut storage_updates = storage_updates.into_iter().peekable();
while let Some(update) = storage_updates.next() {
storage.extend(&update);
let prefix_set = update.construct_prefix_set().freeze();
let storage_sorted = storage.clone().into_sorted();
let trie_updates_sorted = trie_updates.clone().into_sorted();
let (storage_sorted, trie_updates_sorted) =
if storage_updates.peek().is_some() {
(
storage.clone().into_sorted(),
trie_updates.clone().into_sorted(),
)
} else {
(
std::mem::take(&mut storage).into_sorted(),
std::mem::take(&mut trie_updates).into_sorted(),
)
};
let walker = TrieWalker::new(
InMemoryStorageTrieCursor::new(
@ -133,8 +144,10 @@ pub fn calculate_root_from_leaves_repeated(c: &mut Criterion) {
}
hb.root();
if storage_updates.peek().is_some() {
trie_updates.finalize(node_iter.walker, hb);
}
}
},
)
});