Author: Vincent Diepeveen
Date: 04:22:37 02/27/03
Go up one level in this thread
On February 26, 2003 at 14:04:16, Uri Blass wrote:
>I had the following code in my program
>
>do
>{
>...
>if (info[target]==EMPTA)
> target+=8;
>else
> target=64;
>}
>while (target<64)
>
>I found that changing it to else break did not do my program faster.
>
>I think that with break I have branches and without break the compiler can
>translate it to
>
>target=((info[target]==EMPTA)?target+8:64);
>
>My questions are
>1)How can I write the code as branchless code without target=64 that is a waste
>of time?
there is many ways to speed this up. just guessing from head (so without looking
to the assembly output it produces):
do {
int tempty=info[target]-EMPTA;
target += 8;
} while( !tempty );
// of course target is not 64 now as precondition
>2)I understood from previous discussion that for some reason ? is considered
>branchless code.
that is not true in itself.
>What is the reason for it.
>
>It seems to me that using ? is the same as using if.
>If it is not the case then what is the difference?
it is a shorter way to write 'if then else'.
Compilers can optimize it better when there is no arrays in them.
>Uri
This page took 0.01 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.