typeof vs existence (v3)

Revision 3 of this benchmark created on


Preparation HTML

<script>
  var arr = {};
  var loopcount = 10000;
  for (var i = 0; i < 1000; i++) {
    arr['x' + Math.floor(Math.random() * loopcount * 5)] = {
      what: 'ever'
    };
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
typeof
var cnt = 0;
for (var i = 0; i < loopcount ; i++) {
  if (typeof arr['x' + i] !== 'undefined') {
    cnt++;
  }
}
ready
existence
var cnt = 0;
for (var i = 0; i < loopcount ; i++) {
  if (arr['x' + i]) {
    cnt++;
  }
}
ready
existence + typecast
var cnt = 0;
for (var i = 0; i < loopcount ; i++) {
  if (!!arr['x' + i]) {
    cnt++;
  }
}
ready
indexOf
var cnt = 0;
var keys = Object.keys(arr);
for (var i = 0; i < loopcount ; i++) {
  if (keys.indexOf('x' + i) !== -1) {
    cnt++;
  }
}
ready
in
var cnt = 0;
for (var i = 0; i < loopcount ; i++) {
  if (('x' + i) in arr) {
    cnt++;
  }
}
ready

Revisions

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