I think Ronald hinted pretty clearly at the performance implications. Certainly you can search first, but there are two aspects to the benefits of TBs: correct eval and search pruning. If you search first, you are missing out on the latter. So while the TBs may work OK, you are almost certainly losing Elo this way. *Note this is most important/valuable for draws.This is the latest version of "Natural TB", with TB probing moved at the end of the search(*)
(*) I know that Ronald, the syzygy author, thinks this is a "trivial idea", but apart from some general arguments about the smartness of people involved in TB before me, I didn't get any specific refutation, so I have tried it...I love trivial ideas Smile
50 move draws are almost never seen by search (engine) until it is far too late. The reason for this is that the engine must search every viable path 50 moves deep, and this is just not going to happen. In turn, this is a large part (often overlooked) of what makes TBs so valuable (Elo wise), because they can tell the engine, "no this a draw, don't waste your time or go down this path". If you let the engine search TB draws, you are missing out on a huge chunk of the performance (Elo) gain.Using only WDL, you need to preserve the draws (eventually 50 moves draw) detected by the engine and so you need first the engine to search then
This is why I always save and return on draws in my patch.
Code: Select all
if ( abs(v) <= drawScore
|| (abs(ev) < VALUE_KNOWN_WIN && (!ttHit || (ttHit && abs(ttValue) < VALUE_KNOWN_WIN))))