Author: Ratko V Tomic
Date: 18:24:02 10/23/00
Go up one level in this thread
> Anything between may be slower in nodes per seconds because you > have to calculate two different evaluation functions and not > only one. > >It is possible that using old and using new are the best practical options for >playing strength because of this reason. Maybe so if you program it in Basic or Pascal. In C (with or without inline assembler) one can easily make it perform with absolutely no overhead when either of the _pure_ cases is selected, i.e. it would work as a direct call to a single evaluate() function. One way to do it could be via run-time fixups on the call instruction (just like Win32 exe loader does it; there are several ways to do this on a regular function), another via overlays. Or if your calls to evaluators are already dynamic and use indirect calls (via function pointers), which is quite likely for other reasons anyway, it would be even easier to insert one or the other evaluate() pointer. Christophe has been programming in C and assembly languages long enough to know how to do it with 0 speed penalty for either pure case. For mixed case, when both evaluators are weighed with other than 0 and 1, well, yes, you need to evaluate them both if you want to wigh them and add them. But that could still be a user setting in single program and not the two programs. Whenever operating in either pure mode (weights 0 and 1), say aggressive and cautious modes, you would get exactly the same performance as each program had in a separate executable. So that won't explain why there are two programs and why one would need to plan future integration. Hence, there must be more difference than a different leaf evaluate() function (in addition to the main indicator, which is GT's unique combination of risky style with the top-notch comp-comp performance).
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.