Re: For loop and while loop. which one is faster?



In article <eu9m2t$af5$1@xxxxxxxxxxxxxx>,
Iván Sánchez Ortega
<ivansanchez-alg@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:

mgcclx@xxxxxxxxx wrote:

For loop and while loop. which one is faster?
I see many articles fighting over it and different people come up with
different results.

Unless you're designing a compiler, don't worry about that. Worry about the
algorithms instead.

That said, the only possible difference between a for loop and a while loop
is the jump prediction in your architecture's code instruction set. e.g.
the processor can suppose that the condition for a while loop is going to
be true, so it feeds the instructions after the conditional jump (that is,
it's supposing that the jump condition will be successful) and starts
running them in the first stages of the instruction pipeline, saving a
couple of pipeline stages.

Do you have to worry about processor pipelines and jump prediction? Not at
all, unless you're into assembler, or heavy low-level programming. If you
haven't understood a word of the last paragraph, don't worry about loop
speed.

In other words: trust your compiler (or JIT compiler, or interpreter). It
knows about optimizations of conditional jumps better than you (the same
applies to memory caching). Focus on the algorithmics if you want to
shorten processor time.

This is quite right. I never worry about such things - that's the
computer's job.

I use whichever is appropriate - try, in other words, to give a hint to
yourself or whoever is going to look at that code in a year's time. If I
have n items and I want to do something for each of them, I use a for
loop. If I need to loop around until some condition is satisfied (maybe
one of several conditions in different parts of the loop), then I use a
while.

-- tim
.



Relevant Pages

  • Re: How while loop works
    ... I have doubt regarding how compiler understands about while loop. ... value - assigns value to register n ... JLE address - if last value compared was negative, jump to given address ...
    (comp.lang.c)
  • Re: VERY URGENT C PROGRAM
    ... pray for alpha particles if you're so inclined. ... Jump to step 2. ... If you use a null loop then the compiler might ...
    (comp.lang.c)
  • Re: VERY URGENT C PROGRAM
    ... Jump to step 2. ... If you use a null loop then the compiler might ... I didn't specify how long to wait. ...
    (comp.lang.c)
  • Re: Letter to US Sen. Byron Dorgan re unpaid overtime
    ... >> both less efficient and less safe than the Fortran and Basic standard. ... >> The C for loop is actually trying to do what a do loop does. ... sloppy thinking that results from confusing a programming language ... > I do not believe that you are capable of writing a conforming C compiler. ...
    (comp.programming)
  • Re: Letter to US Sen. Byron Dorgan re unpaid overtime
    ... it's a for loop in the C sense. ... > sloppy thinking that results from confusing a programming language ... >> I do not believe that you are capable of writing a conforming C compiler. ... Does Microsoft's C compiler perform this optimisation? ...
    (comp.programming)