Given two engines:
https://1drv.ms/u/s!AoDIyNlDG2QTg8sNLsR ... Q?e=onQOO4
Could somebody calculate the difference and report back?
How is this done generally with the fastest result and minimal standard deviation?
How do I compare Engines?
Moderator: Ras
-
- Posts: 1062
- Joined: Tue Apr 28, 2020 10:03 pm
- Full name: Daniel Infuehr
How do I compare Engines?
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
Daniel Inführ - Software Developer
-
- Posts: 1062
- Joined: Tue Apr 28, 2020 10:03 pm
- Full name: Daniel Infuehr
Re: How do I compare Engines?

Update: No need for exact ELO difference.
Engine A is 10% slower than Engine B.
Meaning that crossing a pinvoke boundary in C# inccurs a higher cost than having optimized inline C# code - for single slider lookups.
That verifies that mixing languages only makes sense when offloading more than a single function call and one language is significantly slower than the other (which it still true for C#).
Even tho most of the time is spent in recusing through EvaluateTT a performance difference of 10% is significant and will yield a measurable elo difference.
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
Daniel Inführ - Software Developer
-
- Posts: 1953
- Joined: Tue Apr 19, 2016 6:08 am
- Location: U.S.A
- Full name: Andrew Grant
Re: How do I compare Engines?
Big sample size of one, running your program through another program.
I would suggest looking for a better way to compare the speeds.
I would suggest looking for a better way to compare the speeds.
-
- Posts: 915
- Joined: Sun Dec 27, 2020 2:40 am
- Location: Bremen, Germany
- Full name: Thomas Jahn
Re: How do I compare Engines?
Oh, you use Leorik!dangi12012 wrote: ↑Wed May 18, 2022 6:47 pm Even tho most of the time is spent in recusing through EvaluateTT a performance difference of 10% is significant and will yield a measurable elo difference.

Only when you change the search/eval of a real engine-vs-engine tournament would be necessary. I use cutechess-cli for that.
If you want to profile the move generation code in isolation I recommend the Leorik.Perft project. It's just move generation and nothing else and instead of the 6M nps I get in the engine it's more like 60M nps there. The performance implications of using PInvoke for sliders should be much more visible there!