Array Performance

JavaScript performance comparison

Revision 136 of this test case created by

Preparation code

<script>
  Benchmark.prototype.setup = function() {
    var a1 = [{id: 29938, name: 'name1'}, {id: 32994, name: 'name2'}];

    var a2 = [];
    a2[29938] = {id: 29938, name: 'name1'};
    a2[32994] = {id: 32994, name: 'name2'};

    var o = {};
    o['29938'] = {id: 29938, name: 'name1'};
    o['32994'] = {id: 32994, name: 'name2'};

    var o2 = {};
    o2['_29938'] = {id: 29938, name: 'name1'};
    o2['_32994'] = {id: 32994, name: 'name2'};

    var a3 = [];
    a3[29938] = {id: 29938, name: 'name1'};
    a3[32994] = {id: 32994, name: 'name2'};

    var a4 = [];
    a4[29938] = {id: 29938, name: 'name1'};
    a4[32994] = {id: 32994, name: 'name2'};
  };
</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
Object by Property eval
var result = eval('o2._29938');
pending…
Manual Array Lookup
//This test just uses a 2 length array
var id = 29938;
for (var i = 0; i < a1.length; i++) {
  if (a1[i] && a1[i].id == id) {
    var result = a1[i];
    break;
  }
}
pending…
Holey Array by Index
var id = 29938;
var result = a2[id];
pending…
Object by Key
var id = '29938';
var result = o[id];
pending…
Object by Property
var result = o2._29938;
pending…
Array Reverse While Lookup
var id = 29938;
var count = a3.length;
while (count--) {
  if (a3[count] && a3[count].id == id) {
    var result = a3[count];
    break;
  }
}
pending…
Array For Lookup
var id = 29938;
for (var i = 0; i < a4.length; i++) {
  if (a4[i] && a4[i].id == id) {
    var result = a4[i];
    break;
  }
}
pending…

Compare results of other browsers

Revisions

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

0 Comments