Author: Matt Taylor
Date: 00:16:00 01/03/03
Go up one level in this thread
On January 02, 2003 at 22:21:10, Robert Hyatt wrote:
>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...
This is does, but I was trying to avoid lengthy discussion about it because it
is unimportant. I corrected the statement in another post and said that it is
"not necessarily faster." It is merely a hint to the compiler that it should
cache R[i] in a register. Compilers usually take the hint unless they are
generating debug code. In debug code, it really wouldn't matter, and in
particular in VC, you might even lose more than you gain.
Also FYI it is not universally true that you can't view the contents of a
variable that gets optimized off of the stack. That is not to say that you can
cheat and look at the register yourself; it is to say that certain debuggers are
smart enough to know where a variable is and when it is.
-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.