It's my first post here. For some time now I've been writing my own UCI engine https://github.com/macsmol/machess.
I keep seeing other engines and and grow suspicion that my engine is way more slow that it should be.
Typically in logs I see it reporting around 220k-390k nodes per second evaluated (these are strictly legal nodes). Here are some logs when searching from the starting position. As you can see the iterative deepening for depths 1-6 takes almost 7 seconds.
Code: Select all
info nodes 20 time 0 depth 1 nps 65402 // low depth searches give low nps but don't take much time so can be ignored generally
info nodes 120 time 1 depth 2 nps 94243
info nodes 1455 time 5 depth 3 nps 283288
info nodes 10253 time 43 depth 4 nps 235876
info nodes 203318 time 519 depth 5 nps 391675
info nodes 1388128 time 6073 depth 6 nps 228552
bestmove e2e3
So here comes my question. How fast should I expect it to run?
I'm using 0x88 board and piece lists. I didn't implement any transposition table yet (Does Roce have transposition table?). My evaluation function is reeally basic (mobility + material). Everything runs in one thread. I've programmed it in Java and run it on Intel i7-4790 @3.60GHz (and the results that you see are after several warm-up runs so that the JVM could run the optimizations).
I've also noticed that after I added quiescence search the NPS got lower. Before I was typically hitting around 300k-500k. Not sure why it's slower. Both versions were counting a call to static evaluation as a node - quiescence search just evaluates more nodes - it shouldn't change the rate at which it does.
Thanks for any input on this topic!