Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about hash tables

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.