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 (minmax):  476.167 ms480.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 (minmax):  479.355 ms480.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.