Testing forEach vs for loop (v21)

Revision 21 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>

Setup

var array = Array(501).join('x').split('');
    var dest;

Test runner

Ready to run.

Testing in
TestOps/sec
Presave length as var
var len = array.length;
for (var i = 0; i < len; ++i) {
  dest = array[i];
}
ready
Use JS 1.6 Array.forEach
array.forEach(function(item) {
  dest = item;
});
ready
Presave length as const
const len = array.length;
for (var i = 0; i < len; ++i) {
  dest = array[i];
}
ready
Iterate backwards
for (var i = array.length - 1; i >= 0; --i) {
  dest = array[i];
}
ready
Use for..in
for (var index in array) {
  dest = array[index];
}
ready
Emulate .NET for-each
for (var i = 0, x; x = array[i]; ++i) {
  dest = x;
}
ready
Naive for loop
for (var i = 0; i < array.length; i++) {
  dest = array[i];
}
ready
jQuery each
$(array).each(function() {
  dest = this[0];
});
ready
while loop
var i = 0,
    x;
while (x = array[i]) {
  dest = x;
  ++i;
}
ready
for loop single length lookup
for (var i = 0, j = array.length; i < j; i++) {
  dest = array[i];
}
ready
while (no assignment in condition)
var i = 0,
    l = array.length,
    x;
while (i < l) {
  x = array[i];
  dest = x;
  ++i;
}
ready
.NET (external declaration)
var i = 0,
    x;
for (; x = array[i]; ++i) {
  dest = x;
}
ready
While
var i = 0, x;
while((x = array[i++]) !== undefined) {
  dest = x;
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.