Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Programmer challenge

Author: Russell Reagan

Date: 01:26:12 02/20/03

Go up one level in this thread


This is just a guess, but maybe you could do some kind of trick with
redefinition? On your webpage, you describe it.

"HINT: WB and BB are zeroed at the beginning of EVAL, this is a costly operation
in C, here is a trick to speed it up using redefinition:
  unsigned char WB[64],BB[64];
  long *PWB = (long *) WB;               // redefine char (8-bit) to long
(32-bit)
  long *PBB = (long *) BB;

  PWB[0]=PWB[1]=PWB[2] ..... =PWB[15]=0; // 16 x 32-bit stores, clear WB
  PBB[0]=PBB[1]=PBB[2] ..... =PBB[15]=0; // 16 x 32-bit stores, clear BB

  This is about 8-10 times faster then the usual:

  for (x=0; x<=63; x++) { WB[x]=0; BB[x]=0; }
Make sure that your compiler's alignment at least is set to 32 bit so that the
generated memory addresses of WB and BB are divisible by 4. In most compilers
the default setting is 32 or 64 bit which is okay."

Since your values are 8-bit chars, it is possible that there could be a trick to
speed up the search, by looking at 4 bytes at a time. Or maybe not :)

Russell



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.