Crate bencher [−] [src]
Simplified stable-compatible benchmark runner.
Almost all user code will only be interested in Bencher and the
macros that are used to describe benchmarker functions and
the benchmark runner.
NOTE: There's no proper black_box yet in this stable port of the
benchmark runner, only a workaround implementation. It may not work
exactly like the upstream test::black_box.
One way to use this crate is to use it as dev-dependency and setup
cargo to compile a file in benches/ that runs without the testing harness.
In Cargo.toml:
[[bench]] name = "example" harness = false
In benches/example.rs:
#[macro_use] extern crate bencher; use bencher::Bencher; fn a(bench: &mut Bencher) { bench.iter(|| { (0..1000).fold(0, |x, y| x + y) }) } fn b(bench: &mut Bencher) { const N: usize = 1024; bench.iter(|| { vec![0u8; N] }); bench.bytes = N as u64; } benchmark_group!(benches, a, b); benchmark_main!(benches);
Use cargo bench as usual. A command line argument can be used to filter
which benchmarks to run.
Reexports
pub use self::TestFn::*; |
Modules
| bench | |
| stats |
Macros
| benchmark_group |
Defines a function called |
| benchmark_main |
Define a |
Structs
| BenchSamples | |
| Bencher |
Manager of the benchmarking runs. |
| TestDesc | |
| TestDescAndFn | |
| TestOpts | |
| TestPaths |
Enums
| TestFn |
Traits
| TDynBenchFn |
Represents a benchmark function. |
Functions
| black_box |
NOTE: We don't have a proper black box in stable Rust. This is a workaround implementation, that may have a too big performance overhead, depending on operation, or it may fail to properly avoid having code optimized out. It is good enough that it is used by default. |
| fmt_bench_samples | |
| run_tests_console |
Type Definitions
| TestName |