JS: For loop vs Array.indexOf (v193)

Revision 193 of this benchmark created by Oleg on


Description

testing speed of a standard for loop vs. Array.indexOf.

Preparation HTML

<script>

var sourceArr = [
  { foo: 'bar' },
  { foo: 'bar' },
  { foo: 'bar' },
  { foo: 'bar' },
  { foo: 'bar' },
  { foo: 'bar' }
];

var targetObj = { foo: 'bar' };
sourceArr.push(targetObj);

// for i++ loop
function getObjPosition1(array, object) {
  var len = array.length 
  for (var i = 0; i < len; ++i) {
    if (array[i] === object) {
      return i;
      break;
    }
  }
}

// while i-- loop
function getObjPosition2(array, object) {
  var i = array.length;
  while (i--) {
    if (array[i] === object) {
      return i;
      break;
    }
  }
}

// while i-- loop + function declared as var
var getObjPosition3 = function(array, object) {
  var i = array.length;
  while (i--) {
    if (array[i] === object) {
      return i;
      break;
    }
  }
};

</script>

Test runner

Ready to run.

Testing in
TestOps/sec
for i++ loop
var position = getObjPosition1(sourceArr, targetObj);
ready
while i-- loop
var position = getObjPosition2(sourceArr, targetObj);
ready
while i-- loop + function declared as var
var position = getObjPosition3(sourceArr, targetObj);
ready
Array.indexOf
var position = sourceArr.indexOf(targetObj);
ready

Revisions

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