Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Optimizing C code for speed

Author: Vincent Diepeveen

Date: 09:21:14 01/01/03

Go up one level in this thread


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 () {}

compilers are very good in handling this but
in general

do {
  ..
} while();

is better for processors (assuming no -O2 but -O) because it
will allow fall through prediction of processors better.

So the while() might get mispredicted when it is a fall through
where the do .. while will usually get correctly predicted.

Also while is an extra instruction. it is an extra JMP to above
which the do .. while doesn't have.

Another reason is you do 1 compare less in a do .. while versus
a while .. do

However compilers aren't stupid. usually they optimize it to the same
thing.

Best regards,
Vincent

>-------
>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



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.