Skip to content

Commit 4254b80

Browse files
authored
bench(trie): avoid unnecessary clones in hash builder repeated bench (paradigmxyz#11827)
1 parent bac244a commit 4254b80

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

crates/trie/sparse/benches/root.rs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,23 @@ pub fn calculate_root_from_leaves_repeated(c: &mut Criterion) {
9090
},
9191
|(init_storage, storage_updates, mut trie_updates)| {
9292
let mut storage = init_storage;
93-
for update in storage_updates {
93+
let mut storage_updates = storage_updates.into_iter().peekable();
94+
while let Some(update) = storage_updates.next() {
9495
storage.extend(&update);
9596

9697
let prefix_set = update.construct_prefix_set().freeze();
97-
let storage_sorted = storage.clone().into_sorted();
98-
let trie_updates_sorted = trie_updates.clone().into_sorted();
98+
let (storage_sorted, trie_updates_sorted) =
99+
if storage_updates.peek().is_some() {
100+
(
101+
storage.clone().into_sorted(),
102+
trie_updates.clone().into_sorted(),
103+
)
104+
} else {
105+
(
106+
std::mem::take(&mut storage).into_sorted(),
107+
std::mem::take(&mut trie_updates).into_sorted(),
108+
)
109+
};
99110

100111
let walker = TrieWalker::new(
101112
InMemoryStorageTrieCursor::new(
@@ -133,7 +144,9 @@ pub fn calculate_root_from_leaves_repeated(c: &mut Criterion) {
133144
}
134145
hb.root();
135146

136-
trie_updates.finalize(node_iter.walker, hb);
147+
if storage_updates.peek().is_some() {
148+
trie_updates.finalize(node_iter.walker, hb);
149+
}
137150
}
138151
},
139152
)

0 commit comments

Comments
 (0)