Author: Dieter Buerssner
Date: 14:04:50 05/08/02
Go up one level in this thread
On May 07, 2002 at 19:26:43, martin fierz wrote: >i used to use a two-table approach in my checkers program, with one table being >used for all nodes which were <N plies from the root, the other for >=N. in the >first table, i replaced with deeper draft only, in the second, i always >replaced. i changed it to a single table after finding no significant >difference; in the single table i have a hash bucket size of 2, and replace the >entry in the bucket with the lower draft. this works better for me than the >double table - what did i do wrong with the double table? I made the same experience as you. And actually I use a similar scheme as you described at the moment (with a bucket size of 3, although I don't use all 3 buckets exactly the same). I also agree with Miguel, that the bucket idea is more cache friendly than seperate tables. One note to the bitfields. In chess programming, we are allways concerned of speed. If you mix signed and unsigned entries, it may depend on the order in which you declare them, for most effiecient code (and also on compiler and architecture - big-little endian, available machine instructions, etc). So, when it possible, it may be easier to use signed/unsigned char entries instead of bitfields for (say) draft and flags. And perhaps (if 16 bit is enough and convenient) for score and best move. For me it works out, that saving another few bits through bitfields would not change the size of the structure at all. Regards, Dieter PS. Thanks for your pointer about the pawnless endgames, and also for explaining me that bad move - must have had some brain failing for that :-(
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.