diff --git a/substrate/bin/node/testing/benches/import.rs b/substrate/bin/node/testing/benches/import.rs index d0ec993655..79cb71b164 100644 --- a/substrate/bin/node/testing/benches/import.rs +++ b/substrate/bin/node/testing/benches/import.rs @@ -37,7 +37,7 @@ use sc_client_api::backend::Backend; criterion_group!( name = benches; - config = Criterion::default().sample_size(50).warm_up_time(std::time::Duration::from_secs(20)); + config = Criterion::default().sample_size(20).warm_up_time(std::time::Duration::from_secs(20)); targets = bench_block_import ); criterion_group!( @@ -50,7 +50,7 @@ criterion_group!( config = Criterion::default().sample_size(10); targets = profile_block_import ); -criterion_main!(benches, profile, wasm_size); +criterion_main!(benches, profile); fn bench_block_import(c: &mut Criterion) { sc_cli::init_logger(""); @@ -152,6 +152,33 @@ struct Setup { block: Block, } +struct SetupIterator { + current: usize, + finish: usize, + multiplier: usize, +} + +impl SetupIterator { + fn new(current: usize, finish: usize, multiplier: usize) -> Self { + SetupIterator { current, finish, multiplier } + } +} + +impl Iterator for SetupIterator { + type Item = Setup; + + fn next(&mut self) -> Option { + if self.current >= self.finish { return None } + + self.current += 1; + + let size = self.current * self.multiplier; + let mut db = BenchDb::new(size); + let block = db.generate_block(size); + Some(Setup { db, block }) + } +} + impl fmt::Debug for Setup { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "Setup: {} tx/block", self.block.extrinsics.len()) @@ -161,14 +188,6 @@ impl fmt::Debug for Setup { fn bench_wasm_size_import(c: &mut Criterion) { sc_cli::init_logger(""); - let mut setups = Vec::new(); - - for block_size in 5..15 { - let mut db = BenchDb::new(block_size*50); - let block = db.generate_block(block_size * 50); - setups.push(Setup { db, block }); - } - c.bench_function_over_inputs("wasm_size_import", move |bencher, setup| { bencher.iter_batched( @@ -181,6 +200,6 @@ fn bench_wasm_size_import(c: &mut Criterion) { criterion::BatchSize::PerIteration, ); }, - setups, + SetupIterator::new(5, 15, 50), ); -} \ No newline at end of file +}