Dojo 1.10.3 array.forEach vs jQuery jquery.each 2.1.3 vs for-loop (v42)

Revision 42 of this benchmark created on


Description

Dojo (1.10.3) array.forEach vs native for loop

Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js">
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.3/dojo/dojo.js">
</script>
<script>
  // setup `arr` array ('small')
  var arr = ['1', true, false, "", void 0, null, 2, 18.5936];

  // testing for having deleted keys in array
  delete(arr[3]);

  // seed `arr_keys` hash
  var arr_keys = {};
  for (var i = 0; i < arr.length; i++) {
    arr.hasOwnProperty(i) && (arr_keys[i] = 0);
  }

  // setup `arr2` array ('medium')
  var arr2 = arr.slice(0);
  for (var j = 0; j < 500; j++) {
    arr2.push(Math.round(Math.random()));
  }

  // seed `arr2_keys` hash
  var arr2_keys = {};
  for (j = 0; j < arr2.length; j++) {
    arr2.hasOwnProperty(j) && (arr2_keys[j] = 0);
  }

  // setup `arr3` array ('big')
  var arr3 = arr2.slice(0);
  for (var m = 0; m < 5000; m++) {
    arr3.push(Math.round(Math.random()));
  }

  // seed `arr3_keys` hash
  var arr3_keys = {};
  for (m = 0; m < arr3.length; m++) {
    arr3.hasOwnProperty(m) && (arr3_keys[m] = 0);
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
for-loop (small array)
for (var i = 0, len = arr.length; i < len; i++) {
  arr[i];
}
ready
Dojo array.forEach (small array)
require(["dojo/_base/array"], function(array) {
  array.forEach(arr, function(key) {
    key;
  });
});
ready
for-loop (big array)
for (var m = 0, len = arr3.length; m < len; m++) {
  arr3[m];
}
ready
Dojo array.forEach (big array)
require(["dojo/_base/array"], function(array) {
  array.forEach(arr3, function(key) {
    key;
  });
});
ready
jQuery.each (small array)
jQuery.each(arr, function(idx, key) {
  key;
});
ready
jQuery.each (big array)
jQuery.each(arr3, function(idx, key) {
  key;
});
ready

Revisions

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