Author: Uri Blass
Date: 10:43:28 12/05/01
Go up one level in this thread
On December 05, 2001 at 13:36:21, Ed Schröder wrote: >On December 05, 2001 at 13:04:49, Miguel A. Ballicora wrote: > >>On December 05, 2001 at 12:42:07, Ed Schröder wrote: >> >>>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. >> >>I do not understand. Why would a compiler want to multiply by 65 in the first >>place? Isn't 64 in both cases as determined by the second index? > >char xxx[0] defines 1 byte. >char xxx[10] defines 11 bytes. It is not what I have in my C book but maybe my C book is not correct(it assumes also that int is 2 bytes when I know that int is 4 bytes) It is claimed there that if you define int my_array[10]; then it means that you get 10 varaibles of 2 bytes and I understand that my_array[10] is not defined. 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.