#![cfg(any(test, feature = "criterion"))]
use criterion::BenchmarkGroup;
use criterion::measurement::WallTime;
use crate::{ConfiguredRun, ThreadPool};
impl<ThreadState, IterState, MeasureWrapperState, MeasureOutput, CleanupState>
ConfiguredRun<'_, ThreadState, IterState, MeasureWrapperState, MeasureOutput, CleanupState>
where
MeasureOutput: Send + 'static,
{
#[cfg_attr(test, mutants::skip)] pub fn execute_criterion_on(
&self,
pool: &mut ThreadPool,
group: &mut BenchmarkGroup<'_, WallTime>,
name: &str,
) -> Vec<MeasureOutput> {
let mut measure_outputs = Vec::new();
group.bench_function(name, |b| {
b.iter_custom(|iters| {
let mut result = self.execute_on(pool, iters);
measure_outputs.extend(result.take_measure_outputs());
result.mean_duration()
});
});
measure_outputs
}
}