2 Commits

Author SHA1 Message Date
dc47964310 added benchmark 2026-03-23 14:55:18 +01:00
61a5507f5c remove notepad 2026-03-23 14:21:23 +01:00
4 changed files with 57 additions and 16 deletions

3
.gitignore vendored
View File

@@ -4,3 +4,6 @@
/temp
.justfile
*.svg
NOTEPAD.md
/.claude

View File

@@ -10,6 +10,10 @@ bench = false
name = "batch"
harness = false
[[bench]]
name = "gaussian"
harness = false
[dependencies]
approx = { version = "0.5.1", optional = true }

View File

@@ -1,16 +0,0 @@
# History
```rust
let mut history = History::new();
let agent_a = history.new_agent();
let agent_b = history.new_agent_with_prior(Prior::new(Gaussian::default(), BETA, GAMMA));
```
```rust
trait Team {
fn players(&self) -> impl Iterator<Item = P>;
fn weights(&self) -> impl Iterator<Item = f64>;
fn score(&self) -> u16;
}
```

50
benches/gaussian.rs Normal file
View File

@@ -0,0 +1,50 @@
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);