I guess that Damage sometimes is too optimistic with respect to the selective search, but so far it seems okish
![Smile :)](./images/smilies/icon_smile.gif)
If you have some new interesting thoughts, I'm looking forward to discuss these with you.
I downloaded this weekend a trial version of Visual Studio 2012 which motivated my to (re)do some profiling tests.
This gave me some clues how/where to optimize.
One of the things I want to change is to migrate from a move-based MoveGenerator towards a position based routine.
Think Ed is doing the same in KingsRow.
As a side-consequence you need to do "non-trivial" calculations for an incremental update of the Zobrist-based hash-function.
For this reason I now implemented a "on-the-fly" hashfunction based on CityHash.
Think Ed uses a Jenkins based Hash (like lookup2, lookup3, or SpookyHash).
Another idea which i didn't work out (so far) is to develop a hash based on the internal Intel CRC32 instruction (which seems to be fast, and could be used for a fast in-line hash function).
Next thing to do is to re-engineer the generator.
To avoid huge bugs I intend to run a 158 game match after every major iteration.
For me the 20% increase in speed is measured for the initial position and a 22-ply search. My goal is to reach 3MNodes/sec (1 core, total search time will be around 25 seconds).
As usual I will start with the non-parallel version, as single-core bugs seems to be more reproducible.
The profile also indicated 1 specific evaluation function call related to a specific pattern class which also takes far more time than i initially anticipated...
So work to do, and never a dull moment
![Smile :)](./images/smilies/icon_smile.gif)
Bert