Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: a question about speed

Author: Ricardo Gibert

Date: 11:27:02 01/03/03

Go up one level in this thread


On January 03, 2003 at 14:09:56, Uri Blass wrote:

>On January 03, 2003 at 14:04:23, Ricardo Gibert wrote:
>
>>On January 03, 2003 at 12:03:45, Uri Blass wrote:
>>
>>>code B is slightly faster than code A.
>>>I know that side can get only 0 or 1(something that the compiler does not know)
>>>and B is eqvivalent to A if you assume that side gets only 0 or 1.
>>>
>>>Is it possible to write a third code that will be even faster than B?
>>>
>>>I think that if the compiler can know that side is or 0 or 1 it can do B even
>>>faster.
>>>
>>>code A:
>>>
>>>if (side==LIGHT)
>>>{
>>>  if (to>=56)
>>>  {
>>>    gen_promote(from,to,bits);
>>>    return;
>>>  }
>>>}
>>>else
>>>{
>>>  if (to<=7)
>>>  {
>>>    gen_promote(from,to,bits);
>>>    return;
>>>  }
>>>}
>>
>>
>>Try something like this:
>>
>>if ((to<=7) || (to>=56))


You could also use "if (to-8 >= 48)" instead of the above. This assumes "to" is
unsigned. It would be a shame for you to duplicate code just avoid 1 extra
operation (the subtraction).


>>  {
>>    gen_promote(from,to,bits);
>>    return;
>>  }
>>
>>
>>Note: Above is untested.
>>
>>I've assumed from "gen_promote(from,to,bits)" that this code is executed for
>>pawn moves only and is intended to test whether promotions should be generated.
>>
>>The test "side==LIGHT" is not neccessary since, the test "to>=56" can only be
>>true if it is Whites move (white pawns can't move to the squares 0 thru 7) and
>>for "to<=7" the reasoning is analogous.
>>
>>I've also assumed that "to<=7" is false even more often than "to>=56", so I
>>placed it first. White has the advantage of the first move after all!
>
>You are right.
>
>Thanks
>
>I did not think about that simple fact but I still think that I can earn more
>speed from having 2 different codes for white and black because in this case
>I can even avoid if ((to<=7) || (to>=56)) and use only one condition inside the
>if and I already know before calling the function if it is white or black.
>
>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.