Author: Robert Hyatt
Date: 11:26:24 04/10/03
Go up one level in this thread
On April 10, 2003 at 12:57:28, José Carlos wrote: >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. Ok... in that case, for a simple test, your example was right. However, when you nest the conditional assignment operator, things get ugly. And that is where we end up in doing real branchless code, lots of redundant calculations that get wiped out by multiplying by zero at the decision point. I'm not going to come down on either side of the readability issue. It probably has a lot to do with what you read regularly. IE bitmaps seem quite easy to read for me. But at first they _definitely_ looked like sanskrit... :)
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.