Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Simple optimization question

Author: Gerd Isenberg

Date: 06:55:08 01/09/04

Go up one level in this thread


On January 09, 2004 at 09:41:01, Robert Hyatt wrote:

>On January 09, 2004 at 06:46:00, Tord Romstad wrote:
>
>>By reading this forum, I've understood that "if" statements are considered
>>evil and that it is often a good idea to remove them if it is possible.  Suppose
>>that I have code which looks like this:
>>
>>if(x) y += 20;
>>
>>Would it then be advantageous to rewrite the code like this?
>>
>>y += (!(!x))*20;
>>
>>In my evaluation function, I have a lot of conditionals which could be avoided
>>by
>>using tricks similar to the one above, but before doing it I would like to make
>>sure it is really a good idea.  After all, the first form above is much more
>>readable.
>>
>>Tord
>
>! produces branches.  Because the C semantics say "if X != 0, !x=0, while
>if X == 0, !x=1.  That !=0 causes a branch and you can't avoid it.  In
>assembly you might avoid the branch with a CMOV instruction, but not
>in the above.

x86 has setCC-instruction which should be used here.

eg.:

SETE/SETZ mreg8
SETE/SETZ mem8





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.