Ras wrote: ↑Thu Mar 11, 2021 11:58 am
emadsen wrote: ↑Wed Mar 10, 2021 10:19 pmYes, my engine gained 39 ELO.
That's strange. Assuming 70 Elo per speed doubling, this means a 47% speedup. Even if assuming that the move generation doesn't take any time at all after the optimisation, it means that before, it must have taken 32% of the total time. That's a lower bound estimation because the move generation still takes time now, so it would have been closer to 40%. That would be extremely high, so I don't think the Elo gain can be attributed to the speedup alone. There should also be some improvement on the move ordering to explain that much Elo.
Also, most nodes are spent in quiescence, so the staged move generation in main search won't have any large impact anyway.
The biggest speed gain would happen if someone would generate all moves in qs and skip the search for the quiet moves. If someone already splits the movegeneration into quiets and capture part from the beginning, then 10% (-20%) speed gain is realistic too. This can make a big difference with hyperfast (<10s) testing games and if the engine level is still in the range of 2000 Elo.
The next thing is, that move ordering because of history heuristic might change and that can have another impact on strength.
Quiet moves get (can have) another history score in staged move generation than in a "one run" implementation because the time when
you check the scores is different. When reengineering the move picker properly (producing the same node counts for example) you will realize issues like that.
I can say that changing to staged move generation can result in 15 Elo only because of the combination speed, testing conditions and engine level.
Finally i agree that 39 Elo is a lot, maybe there was some bug fixing on the fly too.