use criterion::{Criterion, criterion_group, criterion_main}; use smallvec::smallvec; use trueskill_tt::{ConstantDrift, Event, History, Member, Outcome, Team}; fn bench_scored_history(c: &mut Criterion) { c.bench_function("scored_history_60_events_30_iter", |bencher| { bencher.iter(|| { let mut h: History = History::builder_with_key() .mu(25.0) .sigma(25.0 / 3.0) .beta(25.0 / 6.0) .drift(ConstantDrift(0.03)) .score_sigma(2.0) .build(); let mut events: Vec> = Vec::with_capacity(60); for i in 0..60 { let a = format!("p{}", i % 20); let b = format!("p{}", (i + 7) % 20); let s_a = (i as f64 * 0.3).sin().abs() * 21.0; let s_b = (i as f64 * 0.3).cos().abs() * 21.0; events.push(Event { time: 1 + (i / 6) as i64, teams: smallvec![ Team::with_members([Member::new(a)]), Team::with_members([Member::new(b)]), ], outcome: Outcome::scores([s_a, s_b]), }); } h.add_events(events).unwrap(); h.converge().unwrap(); }); }); } criterion_group!(benches, bench_scored_history); criterion_main!(benches);