Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: a question about speed difference that I do not understand

Author: Ed Schröder

Date: 09:42:07 12/05/01

Go up one level in this thread


On December 05, 2001 at 06:46:07, Severi Salminen wrote:

>>>#define color(target) (((info[target])>>3)&3)
>>>
>>>
>>>my data.c file includes
>>>
>>>int info[64];
>>>int side;
>>>int direction[64][64];
>>>int kingsquare[2];
>>>int pin[64];
>>>
>>
>>Perhaps the data types could be a reason for some microscopic effects. If the
>>variable "side" is for instance of type "short", the compiler has to zero-extend
>>the variable to word-size before indexing (because of the array access).
>
>But as you can see the variables are all ints. So no type conversions needed. I
>believe there is just some stupid alignment thing happening or something and
>that's why the program slows down a bit. I'd use side instead of color(sq) and
>hopefully the speedup will show up later.
>
>Severi


You could try to decrease the

int direction[64][64];

by one, thus:

int direction[63][64];

The result might be the compiler doesn't have to do an expensive multiply
(*65) but is able to do a simple shift-left bits instruction (SHL 6) which
shift left the bytes 6 times, thus a multiply by 64.

Ed



This page took 0.01 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.