1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use ::Sample;
use benchmark::Benchmark;
use runner::Runner;
pub struct Bencher<R: Runner<S>, S> {
runner: R,
samples: Vec<Sample<S>>,
}
impl<R: Runner<S>, S> Bencher<R, S> {
pub fn new(runner: R) -> Self {
Bencher {
runner,
samples: vec![],
}
}
pub fn run<B, Ret>(&mut self, bench: &mut B)
where B: Benchmark<Ret>,
{
bench.setup();
let sample = self.runner.run(bench);
self.samples.push(sample);
bench.teardown();
}
pub fn samples(&self) -> &[Sample<S>] {
&self.samples
}
}