From 2fd16f09c809b078cb82c37da6614858b2355654 Mon Sep 17 00:00:00 2001 From: Alexey Shekhirin Date: Sat, 26 Oct 2024 13:53:51 +0100 Subject: [PATCH] use iter_custom --- crates/trie/sparse/benches/rlp_node.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/crates/trie/sparse/benches/rlp_node.rs b/crates/trie/sparse/benches/rlp_node.rs index 3dbdde76ff33..57ab52978b64 100644 --- a/crates/trie/sparse/benches/rlp_node.rs +++ b/crates/trie/sparse/benches/rlp_node.rs @@ -1,5 +1,7 @@ #![allow(missing_docs, unreachable_pub)] +use std::time::{Duration, Instant}; + use alloy_primitives::{B256, U256}; use criterion::{criterion_group, criterion_main, Criterion}; use prop::strategy::ValueTree; @@ -51,10 +53,20 @@ pub fn update_rlp_node_level(c: &mut Criterion) { group.bench_function( format!("size {size} | updated {updated_leaves}% | depth {depth}"), |b| { - b.iter_with_setup( - || sparse.clone(), - |mut sparse| sparse.update_rlp_node_level(depth), - ) + // Use `iter_custom` to avoid measuring clones and drops + b.iter_custom(|iters| { + let mut elapsed = Duration::ZERO; + + let mut cloned = sparse.clone(); + for _ in 0..iters { + let start = Instant::now(); + cloned.update_rlp_node_level(depth); + elapsed += start.elapsed(); + cloned = sparse.clone(); + } + + elapsed + }) }, ); }