Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: speed question about arrays

Author: Gerd Isenberg

Date: 13:22:30 02/19/04

Go up one level in this thread


On February 19, 2004 at 14:39:16, Uri Blass wrote:

>Today I have an array direction[64][64] that gives me different numbers for
>different directions(possible directions are queen direction that get 0-7 knight
>directions that get -2,identical squares that get -9 or no direction that gets
>-1 ).
>
>I thought about the idea to change it to the following definition:
>
>#define direction((i)(j)) directionnumber[translate[i]-translate[j]+128]
>
>The result is that I can get instead of one array of 4096 entries
>2 arrays when translate is an array of 64 entries and directionnumber is an
>array of 256 entries.
>
>My question is if it is a good idea from speed point of view.
>It will probably be a simple change when I only need to construct the 2 arrays
>and the main problem is to construct the translate array.
>
>It is probably only few hours of work but I do not like to spend time on
>constructing these arrays only to discover later that it is not productive so I
>ask for your opinion about it.
>
>Uri

Only some few more aspects in addition to Bob's answer ....

If it is frequently used eg. with generated moves, i would say the extra memory
references and instructions don't pay off. It may even be faster with a 16KByte
4096-int-array.

I often found arrays of packed structs favorably with such 64*64 arrays with low
ranges (eg. distance, taxidistance, unique distance relationship (see links
below) or direction).

With 0x88 there is also a fast substraction trick to get the direction...

http://chessprogramming.org/cccsearch/ccc.php?art_id=245611
http://chessprogramming.org/cccsearch/ccc.php?art_id=245625
http://chessprogramming.org/cccsearch/ccc.php?art_id=245765





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.