Author: Robert Hyatt
Date: 19:21:10 01/02/03
Go up one level in this thread
On January 01, 2003 at 13:25:30, Matt Taylor wrote:
>On January 01, 2003 at 11:50:58, Lieven Clarisse wrote:
>
>>I was wondering if there is a good book about how to write efficient C code. I
>>am not talking about algorithms, but the way *how* to write things, eg
>>
>>which is faster :
>>do {} while() or while () {}
>>
>>-------
>>I know for instance that:
>>
>>ptr=&R[i];
>>if((*ptr==3)||(*ptr==7)) {;}
>>
>>is faster then:
>>
>>if((R[i]==3)||(R[i]==7)) {;}
>>
>>Is there a good book that reviews all those kinds of tricks?
>>
>>regards,
>>
>>Lieven
>
>It varies per compiler. There is an even faster method for your second case:
>
>x = R[i];
>if (x == 3 || x == 7) {;}
So far as I know, at least GCC and Intel's compiler do this already. gcc
considers R[i] as a "very busy expression" and keeps it in a register once
which would carry the optimization across multiple statements. In the above,
any good compiler should recognize and not even do what you suggest. It should
simply recognize from the dependency graph that R[i] is used twice and is not
changed between uses so a second load is not needed...
>
>The only way to know is to look at compiler output. I know for VC, the compiler
>I use most often, it chokes on 64-bit manipulations, stack alignment > 4 bytes,
>and small structures. It usually generates nice code with conditionals such as:
>
>int is_below(int x, int y)
>{
> return (x < y ? 1 : 0);
>}
>
>-Matt
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.