for(;;;) vs forEach vs $.each (v28)

Revision 28 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
require(["dojo/_base/array"], function(array){
  dArray = array;
});
</script>

Setup

var i,
        cachedFunc = function(i){ i / 2; };
    
    window.arr = [];
    
    for (i = 0; i < 10000; i += 1) {
      arr.push(i);
    }

Test runner

Ready to run.

Testing in
TestOps/sec
for(;;;)
var ii = 0, len = arr.length;

for (ii = 0; ii < len; ii += 1) {
  ii / 2;
}
ready
native forEach
arr.forEach(function (i) {
  i / 2;
});
ready
$.each
$.each(arr, function (i) {
  i / 2;
});
ready
native forEach (cached func)
arr.forEach(cachedFunc);
ready
$.each (cached func)
$.each(arr, cachedFunc);
ready
for(;;;) (self func)
var ii = 0, len = arr.length;

for (ii = 0; ii < len; ii += 1) {
  (function(i){ i / 2; }(ii));
}
ready
reverse for(;;;)
var ii, len = arr.length;

for (ii = len - 1; ii >= 0; ii--) {
  ii / 2;
}
ready
for(;;;) without length caching
var ii = 0;

for (ii = 0; ii < arr.length; ii += 1) {
  ii / 2;
}
ready
reverse while
var len = arr.length;
while(len--){
  len/2;
}
ready
dojo forEach (cached func)
dArray.forEach(arr, cachedFunc);
ready
dojo forEach
dArray.forEach(arr, function (i) {
  i / 2;
});
ready

Revisions

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