A friend told us he has observed that some engines running under BanksiaGUI seem to be about 15-20% slower than them running under other chess GUIs. Interested since the percentage is quite large and beyond our understanding so far, we decided to do a quick experiment to verify.
To compare anything we should set up similar conditions, determinedness prefers to non-determinedness. We run two different chess GUIs, each load the same engine to one side, say, Black. We – a human, will play the other side (White) with the same move sequence. Instead of using the time to control engines which may create undetermined results and be harder to compare, we set up all engines to search to a fixed depth, say 30. For the same reason, all engines are set to use one thread, no ponder and have the same hash size. All parameters are checked carefully to make sure they are sent to engines correctly, especially the hash-size since chess GUIs may have different default numbers. We look into engine logs to verify too.
To understanding how chess GUIs affect engines, we also run those chess engines directly from the console (command prompt) and control them manually (without any chess GUI).
Now we can start playing for one side vs engines on the other side. Our moves are the same between chess GUIs as well as the one in the console. Since the search is determined every reply moves from engines as well as none-time-relative-parameters (such as nodes, scores, PVs…) should be the same too. After making a move, we verify carefully to make sure the above parameters are the same. Then we compare parameters relative to time such as spent time periods, speeds… sometimes look their engine logs to check too.
The good news: those parameters are quite the same regardless of chess GUIs nor console. The differences may just about 1% and randomly up/down. The margin could be accepted and ignored. That also means: none of those chess GUIs interferes/affects speeds of engines.
The experiment has confirmed our understanding: chess engines running under a chess GUI are quite independent in terms of computing power: they (those engines) take threads, memory directly and run under the control of the system, not from the chess GUI. Running parallelly in different threads/memory blocks, the chess GUI won’t interfere/affect to the computing of chess engines. It just captures what engines print out (to their consoles) to analyze and show up to users via its Graphical User Interface.
The friend wonders to see the comparisons with multi-threads. That kind of test is harder to compare since there are some undetermined factors. We did some more tests as followings:
- Use 4 threads, hash size 64 MB: again, those settings are checked carefully via logs
- All search to a fixed depth, say, 30
- All tests start from some given FENs
From our observing, those searches may be a little different but in general, engines have same speeds, regardless of chess GUIs.
Below is the screen of BanksiaGUI, Arena, and the engine (Stockfish 11) running without GUIs, searched for a given position. All results, speeds… are quite closed: