Given this code:
var arr = [];
for (var i = 0; i < 10000; ++i)
arr.push(1);
Forwards
for (var i = 0; i < arr.length; ++i) {}
Backwards
for (var i = arr.length - 1; i >= 0; --i) {}
Hard-coded Forward
for (var i = 0; i < 10000; ++i) {}
Why is backwards so much faster?
Here is the test:
http://jsperf.com/array-iteration-direction
Because your forwards-condition has to receive the
lengthproperty of your array each time, whilst the other condition only has to check for “greater then zero”, a very fast task.When your array length doesn’t change during the loop, and you really look at ns-perfomance, you can use
BTW: Instead of
for (var i = arr.length; i > 0; --i)you might usefor (var i = arr.length; i-- > 0; )which really runs through your array from n-1 to 0, not from n to 1.