Computer Chess Club Archives


Search

Terms

Messages

Subject: Hash code oddity ?

Author: GeoffW

Date: 14:59:01 06/04/04


Hi

I was just reading my hash code and thought I could improve the storage scheme.

The Hash Table Insert code was


MYBOOL hashInsert(U64 hashCode,  S32 eval, move bestMove, S32 depth, U8 flags)
.
.

/* If the entry is a valid one and a different position with a greater depth
   than the current position then dont update the table, just return */

   if ((ph->code != hashCode) &&
      ((ph->flags & VALIDITY_FLAG_MASK) == VALID_FLAG) && (ph->depth > depth))
   {
      return FALSE;
   }

/* else the code stores this entry irregardless of depth */

I decided this was not sensible as if the stored position was the same as
current position (64 bit hash key matches) then the code went on to potentially
replace a high depth entry with a low depth entry

I changed the code to

   if (((ph->flags & VALIDITY_FLAG_MASK) == VALID_FLAG) && (ph->depth > depth))
   {
      return FALSE;
   }

this should preserve a higher depth entry for the current position.

However when I went on to test this mod. it was significantly worse then before
?

Can anyone offer some explanation of this or point out my misunderstanding ?

Thanks
            Geoff








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.