Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: speed question about arrays

Author: Robert Hyatt

Date: 12:52:45 02/19/04

Go up one level in this thread


On February 19, 2004 at 15:46:39, Uri Blass wrote:

>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


Going fast is a lot more about witchcraft and superstition than it is about
concrete facts.  :)




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.