benches
This commit is contained in:
parent
149aa841c9
commit
6c706fae26
3 changed files with 342 additions and 0 deletions
65
benches/benches.rs
Normal file
65
benches/benches.rs
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
use eschac::position::Position;
|
||||
|
||||
use gungraun::{main, library_benchmark_group, library_benchmark};
|
||||
use std::hint::black_box;
|
||||
|
||||
static RECORDS: &'static [&'static str] = &[
|
||||
"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq -",
|
||||
"r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq -",
|
||||
"8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -",
|
||||
"r3k2r/Pppp1ppp/1b3nbN/nP6/BBP1P3/q4N2/Pp1P2PP/R2Q1RK1 w kq -",
|
||||
"rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ -",
|
||||
"r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - -",
|
||||
];
|
||||
|
||||
fn position(index: usize) -> Position {
|
||||
Position::from_text_record(RECORDS[index - 1]).unwrap()
|
||||
}
|
||||
fn position_prev(index: usize) -> eschac_prev::position::Position {
|
||||
eschac_prev::position::Position::from_text_record(RECORDS[index - 1]).unwrap()
|
||||
}
|
||||
fn position_shakmaty(index: usize) -> shakmaty::Chess {
|
||||
RECORDS[index - 1].parse::<shakmaty::fen::Fen>().unwrap().into_position(shakmaty::CastlingMode::Standard).unwrap()
|
||||
}
|
||||
|
||||
#[library_benchmark]
|
||||
#[bench::case_1(position(1), 4)]
|
||||
#[bench::case_2(position(2), 4)]
|
||||
#[bench::case_3(position(3), 4)]
|
||||
#[bench::case_4(position(4), 4)]
|
||||
#[bench::case_5(position(5), 4)]
|
||||
#[bench::case_6(position(6), 4)]
|
||||
fn perft(position: Position, depth: usize) -> u128 {
|
||||
black_box(position.perft(depth))
|
||||
}
|
||||
|
||||
#[library_benchmark]
|
||||
#[bench::case_1(position_prev(1), 4)]
|
||||
#[bench::case_2(position_prev(2), 4)]
|
||||
#[bench::case_3(position_prev(3), 4)]
|
||||
#[bench::case_4(position_prev(4), 4)]
|
||||
#[bench::case_5(position_prev(5), 4)]
|
||||
#[bench::case_6(position_prev(6), 4)]
|
||||
fn perft_prev(position: eschac_prev::position::Position, depth: usize) -> u128 {
|
||||
black_box(position.perft(depth))
|
||||
}
|
||||
|
||||
#[library_benchmark]
|
||||
#[bench::case_1(position_shakmaty(1), 4)]
|
||||
#[bench::case_2(position_shakmaty(2), 4)]
|
||||
#[bench::case_3(position_shakmaty(3), 4)]
|
||||
#[bench::case_4(position_shakmaty(4), 4)]
|
||||
#[bench::case_5(position_shakmaty(5), 4)]
|
||||
#[bench::case_6(position_shakmaty(6), 4)]
|
||||
fn perft_shakmaty(position: shakmaty::Chess, depth: usize) -> u128 {
|
||||
black_box(shakmaty::perft(&position, depth as u32) as u128)
|
||||
}
|
||||
|
||||
library_benchmark_group!(
|
||||
name = bench_eschac;
|
||||
compare_by_id = true;
|
||||
// benchmarks = perft_shakmaty, perft_prev, perft
|
||||
benchmarks = perft, perft_prev
|
||||
);
|
||||
|
||||
main!(library_benchmark_groups = bench_eschac);
|
||||
Loading…
Add table
Add a link
Reference in a new issue