Author: Miguel A. Ballicora
Date: 08:53:28 12/05/01
Go up one level in this thread
On December 05, 2001 at 05:33:08, Uri Blass wrote:
>In my program I have the following commands when I generate my pin arrays:
>
>if (color(sq)==side)
>{
> pin[sq]=-1;
> d=direction[kingsquare[color(sq)]][sq];
>...
>
>The strange speed demage to my program happens when I try to replace color(sq)
>with side in the last line
>
>color(sq) is more complicated to find then finding side that is simply integer.
>I expected that in the worst case there will be no speed change thanks to
>optimazion of compiler but I did not imagine that my program could run slower
>when I do something simpler.
>
>some data about my program that may help:
>
>
>
>my defs.h file includes
>
>#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];
>
>you can see that calculating color(sq) is not something simple(you need first to
>calculate info[sq] and later to calculate from it the value for color(sq))
>
>Uri
If I have to bet, I'll say you have a cache problem. Generally, there is a huge
penalty for accessing (consecutively) two variables that are close to 8192 bytes
apart (the size of cache). IIRC I've read that reading variables that are close
to 4096 bytes apart might also give a little penalty (I do not remember now
why). As general rule, jumping 2^n bytes is not good and there are some
n that are worse.
You access side and kingsquare that are roughly 4096 bytes apart.
Test it with this definitions, putting together side and kingsquare so they
will be in the same cache line (32 bytes).
int info[64];
int side;
int kingsquare[2];
int direction[64][64];
int pin[64];
I would also try:
int direction[64][64];
int pin[64];
int info[64];
int kingsquare[2];
int side;
side, kingsquare and info are accessed consecutively, so put them together.
Alignment can have an effect too.
Let us know what happen, I am curious.
Anyway, I do not think you have to worry about this now with your program.
Regards,
Miguel
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.