Computer Chess Club Archives


Search

Terms

Messages

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

Author: José Carlos

Date: 03:59:23 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

  The other posters have answered well. The compiler might do weird things with
registers and also cache might be important here. However, you should use side
and forget the thing, because otherwise you'd have to test this for every line
of code you wrote, which might affect compiler optimizations.

  José C.

>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



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.