Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: speed question about arrays

Author: Robert Hyatt

Date: 11:48:08 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


This is never easy to answer.  And unfortunately, I would suggest that you
simply try it to see.  Trading additional instructions for fewer memory
references is a good idea, but you are not exactly doing that.  WIth your first
approach, you do one memory reference and you are finished, even though it is
into a fairly big array.  With the second approach, you do three memory
references, although the two translate array references might be to the same
cache line if the thing is 64 chars rather than 64 ints.

I wouldn't be surprised if the change turns out to be worse however, but it
might be a "close thing".  And, of course, the answer can change as your program
changes as well, so that suddenly you start accessing something that dislodges
either of the two smaller arrays, or the one bigger array from cache, making it
more expensive to access one over the other.



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.