For.A million numbers. A billion numbers. We want to loop over them all in order—with a for-loop, we have an efficient and standard looping construct.
With while,another loop, we can do the same thing as for, but the syntax may be simpler when an end point is not known. So while is a good infinite loop.
Result: The program begins at 0 and stops at 4. When "i" reaches 5, the loop is terminated before being run again.
While.Here we rewrite the first "for" loop into a while-loop. This version of the looping logic is somewhat harder to follow for both people and compilers.
So: We usually prefer "for" when the end point is known. But for an infinite loop or one where we do not know here it stops, while is good.
For-of loop.This loop enumerates the elements in an array. It does not return indexes like for-in. It returns the actual elements in the array.
For-in loop.This loop returns all the indexes of an array. So in an array of 3 elements, we get the indexes 0, 1 and 2. We can then access the elements themselves.
For versus while.Few things in the world are as important as micro-benchmarks. Here we test a for-loop over an array versus a while-loop over an array.
Program 1: We sum the elements in a short integer array in a for-loop. The V8 compiler can eliminate bounds checks in this loop.
Program 2: A while-loop is used to iterate over the array. This version may be harder to optimize for a compiler.
Result: The first program performs slightly better. The simpler for-loop is a faster way to iterate over an array.
Array iteration, warning.Hoisting variables and caching the length in a for-loop may lead to micro-benchmark improvements. But these can disappear on more complex, real programs.Array
Array iteration, continued.In complex benchmarks I have found that the "for" loop with no cached lengths tends to perform the best. More complex loops are harder to optimize.
A looping review.Most programs are built around looping. Loops construct web pages, they animate graphics, they decide an optimal chess move.
Dot Net Perls
|© 2007-2019 Sam Allen. All rights reserved. Written by Sam Allen, email@example.com.|