51 lines
1.4 KiB
Rust
51 lines
1.4 KiB
Rust
use criterion::{criterion_group, criterion_main, Criterion};
|
|
use trueskill_tt::gaussian::Gaussian;
|
|
|
|
fn benchmark_gaussian_arithmetic(criterion: &mut Criterion) {
|
|
// Define test Gaussians
|
|
let g1 = Gaussian::from_ms(25.0, 25.0 / 3.0);
|
|
let g2 = Gaussian::from_ms(0.0, 1.0);
|
|
let g3 = Gaussian::from_ms(1.0, 1.0);
|
|
|
|
// Benchmark addition
|
|
criterion.bench_function("Gaussian::add", |bencher| {
|
|
bencher.iter(|| g1 + g2);
|
|
});
|
|
|
|
// Benchmark subtraction
|
|
criterion.bench_function("Gaussian::sub", |bencher| {
|
|
bencher.iter(|| g1 - g3);
|
|
});
|
|
|
|
// Benchmark multiplication
|
|
criterion.bench_function("Gaussian::mul", |bencher| {
|
|
bencher.iter(|| g1 * g2);
|
|
});
|
|
|
|
// Benchmark division
|
|
criterion.bench_function("Gaussian::div", |bencher| {
|
|
bencher.iter(|| g1 / g2);
|
|
});
|
|
|
|
// Benchmark natural parameter conversions
|
|
criterion.bench_function("Gaussian::pi", |bencher| {
|
|
bencher.iter(|| g1.pi());
|
|
});
|
|
|
|
criterion.bench_function("Gaussian::tau", |bencher| {
|
|
bencher.iter(|| g1.tau());
|
|
});
|
|
|
|
// Benchmark combined pi/tau operations (used in mul/div)
|
|
criterion.bench_function("Gaussian::pi_tau_combined", |bencher| {
|
|
bencher.iter(|| {
|
|
let pi = g1.pi();
|
|
let tau = g1.tau();
|
|
(pi, tau)
|
|
});
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, benchmark_gaussian_arithmetic);
|
|
criterion_main!(benches);
|