use criterion::{criterion_group, criterion_main, Criterion, Throughput}; use othello::repr::{Board, Piece}; fn fill_board(loops: usize) { let mut board = Board::new(); board.place_unchecked((0, 1).into(), Piece::White); board.place_unchecked((0, 2).into(), Piece::Black); board.place_unchecked((0, 3).into(), Piece::Black); board.place_unchecked((0, 4).into(), Piece::Black); for _ in 0..loops { let mut board = board; let _ = board.place((0, 5).into(), Piece::White); } } fn criterion_benchmark(c: &mut Criterion) { let mut group = c.benchmark_group("board"); const LOOPS: usize = 1000; group.throughput(Throughput::Elements(LOOPS as u64)); group.bench_function("board_place", |b| { b.iter(|| fill_board(LOOPS)); }); group.finish(); } criterion_group!(benches, criterion_benchmark); criterion_main!(benches);