derive: bench in batches

Cloning a TokenStream is not for free. This change lets criterion do the
cloning outside of the measured time, and blackboxing is done by
criterion, too.

The benchmark runs ~10% faster, now.
This commit is contained in:
René Kijewski 2024-06-22 15:54:58 +02:00
parent 62b891ffc3
commit cf2419b1a9

View File

@ -1,4 +1,4 @@
use criterion::{black_box, criterion_group, criterion_main, Criterion}; use criterion::{criterion_group, criterion_main, BatchSize, Criterion};
use quote::quote; use quote::quote;
criterion_main!(benches); criterion_main!(benches);
@ -19,7 +19,9 @@ fn hello_world(b: &mut criterion::Bencher<'_>) {
user: &'a str, user: &'a str,
} }
}; };
b.iter(|| { b.iter_batched(
rinja_derive_standalone::derive_template2(black_box(&ts).clone()); || ts.clone(),
}) |ts| rinja_derive_standalone::derive_template2(ts),
BatchSize::LargeInput,
);
} }