in Object vs Array.indexOf

JavaScript performance comparison

Test case created by

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  if (!Array.prototype.indexOf) {
      Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {

          "use strict";
          if (this == null) {
              throw new TypeError();
          }
          var t = Object(this);
          var len = t.length >>> 0;
          if (len === 0) {
              return -1;
          }
          var n = 0;
          if (arguments.length > 1) {
              n = Number(arguments[1]);
              if (n != n) { // shortcut for verifying if it's NaN
                  n = 0;
              } else if (n != 0 && n != Infinity && n != -Infinity) {
                  n = (n > 0 || -1) * Math.floor(Math.abs(n));
              }
          }
          if (n >= len) {
              return -1;
          }
          var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
          for (; k < len; k++) {
              if (k in t && t[k] === searchElement) {
                  return k;
              }
          }
          return -1;
      }
  }
  
  var obj = {},
  arr = [];
  
  for(var i = 0; i < 1000; i++) {
    if(i % 2 === 0) {
      arr.push(obj[i] = true);
    }
  }

};
</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
in
var count = 0;

for(var i = 0; i < 1000; i++) {
  if(i in obj) {
    count++;
  }
}
pending…
indexOf
var count = 0;

for(var i = 0; i < 1000; i++) {
  if(arr.indexOf(i) > -1) {
    count++;
  }
}
pending…
[] !== undefined
var count = 0;

for(var i = 0; i < 1000; i++) {
  if(obj[i] !== undefined) {
    count++;
  }
}
pending…
hasOwnProperty
var count = 0;

for(var i = 0; i < 1000; i++) {
  if(obj.hasOwnProperty(i)) {
    count++;
  }
}
pending…

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

Compare results of other browsers

0 Comments