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.