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
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.167 ms … 480.064 ms ┊ GC (min … max): 0.00% … 0.00%
Time (median): 476.886 ms ┊ GC (median): 0.00%
Time (mean ± σ): 477.136 ms ± 1.032 ms ┊ GC (mean ± σ): 0.00% ± 0.00%
█
▇▁▁▁▁▇▇▁▇▁▁█▁▁▁▇▇▁▁▇▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▇ ▁
476 ms Histogram: frequency by time 480 ms <
Memory estimate: 19.72 KiB, allocs estimate: 28.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): 479.355 ms … 480.405 ms ┊ GC (min … max): 0.00% … 0.00%
Time (median): 479.999 ms ┊ GC (median): 0.00%
Time (mean ± σ): 479.976 ms ± 305.704 μs ┊ GC (mean ± σ): 0.00% ± 0.00%
▁ ▁ ▁ █ ▁ ▁ █ ▁ ▁
█▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█▁▁▁▁▁▁▁█▁█▁▁▁█▁▁▁▁▁█▁▁▁▁█▁▁▁▁▁▁▁█ ▁
479 ms Histogram: frequency by time 480 ms <
Memory estimate: 19.72 KiB, allocs estimate: 28.Seems to be barely affect performance.