Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: question about importance of branchless code for speed

Author: José Carlos

Date: 09:57:28 04/10/03

Go up one level in this thread


On April 10, 2003 at 11:32:29, Robert Hyatt wrote:

>On April 10, 2003 at 04:32:19, José Carlos wrote:
>
>>On April 09, 2003 at 18:21:27, Daniel Clausen wrote:
>>
>>>On April 09, 2003 at 17:59:18, Robert Hyatt wrote:
>>>
>>>>On April 09, 2003 at 12:29:20, Daniel Clausen wrote:
>>>>
>>>>>On April 09, 2003 at 12:12:22, Robert Hyatt wrote:
>>>>>
>>>>>>if (wtm == 1)
>>>>>>  score+=bonus1
>>>>>>else
>>>>>>  score+=bonus2;
>>>>>>
>>>>>>You could turn that into:
>>>>>>
>>>>>>score+=wtm*bonus1 + (wtm^1)*bonus2;
>>>>>>
>>>>>>the new code does more work, but has no branch to mispredict.
>>>>>
>>>>>And it's soo incredibly readable. :p I know this is not the discussion here, but
>>>>>I wanted to point the out nevertheless. :)
>>>>>
>>>>>Sargon
>>>>
>>>>
>>>>In that case, yes.  But in other cases, it is much harder to read because both
>>>>sides of the "branch" are encoded into a single instruction and it is not clear
>>>>what is going on....
>>>
>>>Um.. I'm not sure I understand you now.. are you saying that you find the
>>>version "score+=wtm*bonus1 + (wtm^1)*bonus2" more readable?
>>>
>>>In this case I'm a tad surprised.
>>>
>>>Sargon
>>
>>  Actually, it looks pretty much like:
>>
>>score += wtm ? bonus1 : bonus2;
>>
>>  which is a very normal construct in C.
>>
>>  José C.
>
>And also has a branch which we were trying to eliminate.  :)

  I know, I was only pointing that the code you posted (branchless) didn't look
unreadable, but similiar (at first sight) to the very tipical ? : instruction. I
know it has a branch ;)

  José C.



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.