for vs array-foreach (v18)

Revision 18 of this benchmark created by Digitale Welten on


Preparation HTML

<script>

Array.prototype.forEachFn = function(value, index, object) {
  //return value;
};
Array.prototype.forEachIntern = function() {
  var _this = this;
  var i; len = _this.length;
  for(i=0; i<len; i+=1) _this.forEachFn(_this[i], i, _this); 
};

var array = Array(1000).join('xxxxxxxx').split('');
var callback = function(value, index, object) {
  return value;
};

forEachIntern2 = function(array){
  var i; len = array.length;
  for(i=0; i<len; i+=1) callback(array[i], i, array); 
};

forEachIntern3 = function(array, fn){
  var i; len = array.length;
  for(i=0; i<len; i+=1) fn(array[i], i, array); 
};

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
for-loop
for (var index = 0, length = array.length; index < length; index++) {
  callback(array[index], index, array);
}
ready
Array#forEach
array.forEach(callback);
ready
for-loop naive
for (var index = 0; index < array.length; index++) {
  callback(array[index], index, array);
}
ready
for-loop reversed
for (var index = array.length; index--;) {
  callback(array[index], index, array);
}
ready
for-loop (optimized)
var i; len = array.length;
for(i=0; i<len; i++) callback(array[i], i, array);
ready
Prototype Internal
array.forEachIntern();
ready
forEachIntern2(array);
ready
forEachIntern3(array, callback);
ready

Revisions

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