Array.indexOf vs For loop (v21)

Revision 21 of this benchmark created by Carlos Ouro on


Setup

var array1 = [], array2 = [];
  var randomnumber1, randomnumber2, i;
  for (i = 0; i < 100000; i++) {
    randomnumber1 = Math.floor(Math.random() * 1001);
    randomnumber2 = Math.floor(Math.random() * 1001);
  
    array1.push(randomnumber1);
    array2.push(randomnumber2);
  }
  
  for (i = 0; i < 1000000; i++) {
    randomnumber1 = Math.floor(Math.random() * 1001);
  
    array1.push(randomnumber1);
  }

Test runner

Ready to run.

Testing in
TestOps/sec
For loop (big > small)
for (var i = 0, len = array1.length; i < len; i++) {
  var value = array1[i];
  var result = false;

  for (var j = 0, len = array2.length; j < len; j++) {
    if (value === array2[j]) {
      result = true;
      break;
    }
  }
}
ready
For loop (small > big)
for (var i = 0, len = array2.length; i < len; i++) {
  var value = array2[i];
  var result = false;

  for (var j = 0, len = array1.length; j < len; j++) {
    if (value === array1[j]) {
      result = true;
      break;
    }
  }
}
ready
Array.indexOf() (big > small)
for (var i = 0, len = array1.length; i < len; i++) {
  var value = array1[i];
  var result = (array2.indexOf(value) !== -1);
}
ready
Array.indexOf() (small > big)
for (var i = 0, len = array2.length; i < len; i++) {
  var value = array2[i];
  var result = (array1.indexOf(value) !== -1);
}
ready

Revisions

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