Benchmarks
Starting from version 0.2.0 of OrbisChessEngine this page shows benchmark results for perft for various depths. Can be used to compare performance with older versions.
Benchmark Results for Perft
All benchmarks below are using a single thread. Perft uses the Board stuct from OrbisChessEngine, which means it computes zobrist hash, and evaluation score at each node. Thus, it mimics the search process more closely than a pure move generator perft.
using OrbisChessEngine
using BenchmarkTools
b = Board()
perft(b, 5) # warm up
@benchmark perft($b, 5)BenchmarkTools.Trial: 11 samples with 1 evaluation per sample.
Range (min … max): 476.957 ms … 497.092 ms ┊ GC (min … max): 0.00% … 0.00%
Time (median): 478.372 ms ┊ GC (median): 0.00%
Time (mean ± σ): 479.898 ms ± 5.745 ms ┊ GC (mean ± σ): 0.00% ± 0.00%
▃ ▃█
▇█▁██▇▁▇▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▇ ▁
477 ms Histogram: frequency by time 497 ms <
Memory estimate: 19.34 KiB, allocs estimate: 16.Using perft_bishop_magic which uses magic bitboards for bishop move generation:
using OrbisChessEngine
using BenchmarkTools
b = Board()
perft_bishop_magic(b, 5) # warm up
@benchmark perft_bishop_magic($b, 5)BenchmarkTools.Trial: 11 samples with 1 evaluation per sample.
Range (min … max): 475.879 ms … 476.922 ms ┊ GC (min … max): 0.00% … 0.00%
Time (median): 476.556 ms ┊ GC (median): 0.00%
Time (mean ± σ): 476.499 ms ± 314.150 μs ┊ GC (mean ± σ): 0.00% ± 0.00%
▁ ▁ ▁ ▁ █ ▁▁ ▁ ▁ ▁
█▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁█▁▁▁▁▁▁▁▁█▁▁▁██▁█▁▁▁▁▁▁▁▁█▁▁▁▁█ ▁
476 ms Histogram: frequency by time 477 ms <
Memory estimate: 19.34 KiB, allocs estimate: 16.Seems to be barely affect performance.
Benchmark Results for Search
Benchmarking search to depth 10 from starting position:
using OrbisChessEngine
using BenchmarkTools
b = Board()
search(b; depth = 4, opening_book = nothing) # warm up
@benchmark search($b; depth = 10, opening_book = nothing)BenchmarkTools.Trial: 1 sample with 1 evaluation per sample.
Single result which took 259.137 s (2.17% GC) to evaluate,
with a memory estimate of 187.12 GiB, over 476409298 allocations.