more questions about efficient C code
    Chris Torek 
    chris at umcp-cs.UUCP
       
    Sat Jun 22 10:23:45 AEST 1985
    
    
  
All of these depend on your compiler.  I'm going to answer them for
4BSD Vax PCC.
> 1) Is the "var = (bool expr) ? : expr1 : expr2" construct faster
>    than just a good old if statement? 
Depends.  PCC generates moves into r0 for expr1 and expr2, followed
by a move from r0 to var.  If var is already a register, this is
clearly slower.  If it's a complex pointer dereference, it could be
faster.
> 2) Are for loops faster than while loops? 
No.
> 3) Is there really much to be gained by using assignment within
>    a boolean expression, for example, is
>
>	if ((fp = fopen("foo", "r") == NULL) {
>
>    really that much faster than
>
>	fp = fopen("foo", "r");
>	if (fp == NULL) {
Again, depends: if "fp" is not a register, the assignment+test is faster,
since you end up branching after the assignment from r0 to "fp".  If it
is a register, it comes out the same.  (At least after optimization, usually).
The first form is never slower, anyway.
> 4) Are tests for zero more efficently written as
>
>	if (var) {
>
>    rather than as
>
>	if (var != 0) {
No.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251)
UUCP:	seismo!umcp-cs!chris
CSNet:	chris at umcp-cs		ARPA:	chris at maryland
    
    
More information about the Comp.lang.c
mailing list