63 lines
1.6 KiB
Rust
63 lines
1.6 KiB
Rust
use std::collections::HashMap;
|
|
|
|
use criterion::{criterion_group, criterion_main, Criterion};
|
|
use trueskill_tt::{
|
|
agent::Agent, batch::Batch, gaussian::Gaussian, player::Player, IndexMap, BETA, GAMMA, MU,
|
|
P_DRAW, SIGMA,
|
|
};
|
|
|
|
fn criterion_benchmark(criterion: &mut Criterion) {
|
|
let mut index = IndexMap::new();
|
|
|
|
let a = index.get_or_create("a");
|
|
let b = index.get_or_create("b");
|
|
let c = index.get_or_create("c");
|
|
|
|
let agents = {
|
|
let mut map = HashMap::new();
|
|
|
|
map.insert(
|
|
a,
|
|
Agent {
|
|
player: Player::new(Gaussian::new(MU, SIGMA), BETA, GAMMA),
|
|
..Default::default()
|
|
},
|
|
);
|
|
map.insert(
|
|
b,
|
|
Agent {
|
|
player: Player::new(Gaussian::new(MU, SIGMA), BETA, GAMMA),
|
|
..Default::default()
|
|
},
|
|
);
|
|
map.insert(
|
|
c,
|
|
Agent {
|
|
player: Player::new(Gaussian::new(MU, SIGMA), BETA, GAMMA),
|
|
..Default::default()
|
|
},
|
|
);
|
|
|
|
map
|
|
};
|
|
|
|
let mut composition = Vec::new();
|
|
let mut results = Vec::new();
|
|
let mut weights = Vec::new();
|
|
|
|
for _ in 0..100 {
|
|
composition.push(vec![vec![a], vec![b]]);
|
|
results.push(vec![1.0, 0.0]);
|
|
weights.push(vec![vec![1.0], vec![1.0]]);
|
|
}
|
|
|
|
let mut batch = Batch::new(composition, results, weights, 1, P_DRAW, &agents);
|
|
|
|
criterion.bench_function("Batch::iteration", |b| {
|
|
b.iter(|| batch.iteration(0, &agents))
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, criterion_benchmark);
|
|
criterion_main!(benches);
|