Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: speed question about arrays

Author: Uri Blass

Date: 12:46:39 02/19/04

Go up one level in this thread


On February 19, 2004 at 14:48:08, Robert Hyatt wrote:

>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.

Thanks
Without clear answer there are other things with bigger priority to try.

Uri



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.