Array Performance

JavaScript performance comparison

Revision 71 of this test case created

Info

Manual array lookups vs. holey arrays.

Preparation code

<script>
  Benchmark.prototype.setup = function() {
   var a1 = [{id:1852, name: 'name1'}
,{id:3827, name: 'name1'}
,{id:3837, name: 'name1'}
,{id:3914, name: 'name1'}
,{id:3915, name: 'name1'}
,{id:3916, name: 'name1'}
,{id:3917, name: 'name1'}
,{id:3918, name: 'name1'}
,{id:3919, name: 'name1'}
,{id:3920, name: 'name1'}
,{id:3921, name: 'name1'}
,{id:3922, name: 'name1'}
,{id:3923, name: 'name1'}
,{id:3924, name: 'name1'}
,{id:3925, name: 'name1'}
,{id:3926, name: 'name1'}
,{id:3927, name: 'name1'}
,{id:3962, name: 'name1'}
,{id:3963, name: 'name1'}
,{id:3964, name: 'name1'}
,{id:4006, name: 'name1'}
,{id:4008, name: 'name1'}
,{id:4017, name: 'name1'}
,{id:4068, name: 'name1'}
,{id: 29938, name: 'name1'}
,{id:4084, name: 'name1'}
,{id:4200, name: 'name1'}
,{id:4201, name: 'name1'}
,{id:4202, name: 'name1'}
,{id:4203, name: 'name1'}
,{id:4204, name: 'name1'}
,{id:4205, name: 'name1'}
,{id:4206, name: 'name1'}
,{id:4207, name: 'name1'}
,{id:4208, name: 'name1'}
,{id:4209, name: 'name1'}
,{id:4210, name: 'name1'}
,{id:4258, name: 'name1'}
,{id:4259, name: 'name1'}
,{id:4260, name: 'name1'}
,{id:4261, name: 'name1'}
,{id:4262, name: 'name1'}
,{id:4263, name: 'name1'}
,{id:4264, name: 'name1'}
,{id:4323, name: 'name1'}
,{id:4333, name: 'name1'}
,{id:4490, name: 'name1'}
,{id:5110, name: 'name1'}
,{id:5263, name: 'name1'}
,{id:5516, name: 'name1'}
,{id:5921, name: 'name1'}
,{id:7442, name: 'name1'}
,{id:9168, name: 'name1'}
,{id:9274, name: 'name1'}
,{id:10262, name: 'name1'}
,{id:10663, name: 'name1'}
,{id:11031, name: 'name1'}
,{id:12024, name: 'name1'}
,{id:12537, name: 'name1'}
,{id:13566, name: 'name1'}
,{id:13630, name: 'name1'}
,{id:13699, name: 'name1'}
,{id:14239, name: 'name1'}
,{id:14265, name: 'name1'}
,{id:14363, name: 'name1'}
,{id:15249, name: 'name1'}
,{id:15608, name: 'name1'}
,{id:16200, name: 'name1'}
,{id:16300, name: 'name1'}
,{id:18241, name: 'name1'}
,{id:18269, name: 'name1'}
,{id:18370, name: 'name1'}
,{id:18425, name: 'name1'}
,{id:18517, name: 'name1'}
,{id:19193, name: 'name1'}
,{id:19523, name: 'name1'}
,{id:22337, name: 'name1'}
,{id:23411, name: 'name1'}
,{id:24590, name: 'name1'}
,{id:25285, name: 'name1'}
,{id:25309, name: 'name1'}
,{id:25454, name: 'name1'}
,{id:25597, name: 'name1'}
,{id:26025, name: 'name1'}
,{id:27151, name: 'name1'}
,{id:27842, name: 'name1'}
,{id:74413, name: 'name1'}
,{id:79953, name: 'name1'}
,{id:89026, name: 'name1'}
,{id:89027, name: 'name1'}
,{id: 32994, name: 'name1'}];


    var a2 = [];
a2[1852] = {id:1852, name: 'name1'}
a2[3827] = {id:3827, name: 'name1'}
a2[3837] = {id:3837, name: 'name1'}
a2[3914] = {id:3914, name: 'name1'}
a2[3915] = {id:3915, name: 'name1'}
a2[3916] = {id:3916, name: 'name1'}
a2[3917] = {id:3917, name: 'name1'}
a2[3918] = {id:3918, name: 'name1'}
a2[3919] = {id:3919, name: 'name1'}
a2[3920] = {id:3920, name: 'name1'}
a2[3921] = {id:3921, name: 'name1'}
a2[3922] = {id:3922, name: 'name1'}
a2[3923] = {id:3923, name: 'name1'}
a2[3924] = {id:3924, name: 'name1'}
a2[3925] = {id:3925, name: 'name1'}
a2[3926] = {id:3926, name: 'name1'}
a2[3927] = {id:3927, name: 'name1'}
a2[3962] = {id:3962, name: 'name1'}
a2[3963] = {id:3963, name: 'name1'}
a2[3964] = {id:3964, name: 'name1'}
a2[4006] = {id:4006, name: 'name1'}
a2[4008] = {id:4008, name: 'name1'}
a2[4017] = {id:4017, name: 'name1'}
a2[4068] = {id:4068, name: 'name1'}
a2[4084] = {id:4084, name: 'name1'}
a2[4200] = {id:4200, name: 'name1'}
a2[4201] = {id:4201, name: 'name1'}
a2[4202] = {id:4202, name: 'name1'}
a2[4203] = {id:4203, name: 'name1'}
a2[4204] = {id:4204, name: 'name1'}
a2[4205] = {id:4205, name: 'name1'}
a2[4206] = {id:4206, name: 'name1'}
a2[4207] = {id:4207, name: 'name1'}
a2[4208] = {id:4208, name: 'name1'}
a2[4209] = {id:4209, name: 'name1'}
a2[4210] = {id:4210, name: 'name1'}
a2[4258] = {id:4258, name: 'name1'}
a2[4259] = {id:4259, name: 'name1'}
a2[4260] = {id:4260, name: 'name1'}
a2[4261] = {id:4261, name: 'name1'}
a2[4262] = {id:4262, name: 'name1'}
a2[4263] = {id:4263, name: 'name1'}
a2[4264] = {id:4264, name: 'name1'}
a2[4323] = {id:4323, name: 'name1'}
a2[4333] = {id:4333, name: 'name1'}
a2[4490] = {id:4490, name: 'name1'}
a2[5110] = {id:5110, name: 'name1'}
a2[5263] = {id:5263, name: 'name1'}
a2[5516] = {id:5516, name: 'name1'}
a2[5921] = {id:5921, name: 'name1'}
a2[7442] = {id:7442, name: 'name1'}
a2[9168] = {id:9168, name: 'name1'}
a2[9274] = {id:9274, name: 'name1'}
a2[10262] = {id:10262, name: 'name1'}
a2[10663] = {id:10663, name: 'name1'}
a2[11031] = {id:11031, name: 'name1'}
a2[12024] = {id:12024, name: 'name1'}
a2[12537] = {id:12537, name: 'name1'}
a2[13566] = {id:13566, name: 'name1'}
a2[13630] = {id:13630, name: 'name1'}
a2[13699] = {id:13699, name: 'name1'}
a2[14239] = {id:14239, name: 'name1'}
a2[14265] = {id:14265, name: 'name1'}
a2[14363] = {id:14363, name: 'name1'}
a2[15249] = {id:15249, name: 'name1'}
a2[15608] = {id:15608, name: 'name1'}
a2[16200] = {id:16200, name: 'name1'}
a2[16300] = {id:16300, name: 'name1'}
a2[18241] = {id:18241, name: 'name1'}
a2[18269] = {id:18269, name: 'name1'}
a2[18370] = {id:18370, name: 'name1'}
a2[18425] = {id:18425, name: 'name1'}
a2[18517] = {id:18517, name: 'name1'}
a2[19193] = {id:19193, name: 'name1'}
a2[19523] = {id:19523, name: 'name1'}
a2[22337] = {id:22337, name: 'name1'}
a2[23411] = {id:23411, name: 'name1'}
a2[24590] = {id:24590, name: 'name1'}
a2[25285] = {id:25285, name: 'name1'}
a2[25309] = {id:25309, name: 'name1'}
a2[25454] = {id:25454, name: 'name1'}
a2[25597] = {id:25597, name: 'name1'}
a2[26025] = {id:26025, name: 'name1'}
a2[27151] = {id:27151, name: 'name1'}
a2[27842] = {id:27842, name: 'name1'}
a2[74413] = {id:74413, name: 'name1'}
a2[79953] = {id:79953, name: 'name1'}
a2[89026] = {id:89026, name: 'name1'}
a2[89027] = {id:89027, name: 'name1'}
    a2[29938] = {id: 29938, name: 'name1'};
    a2[32994] = {id: 32994, name: 'name1'};

    var o = {};
    o['29938'] = {id: 29938, name: 'name1'};
    o['32994'] = {id: 32994, name: 'name1'};
o['1852'] = {id:1852, name: 'name1'}
o['3827'] = {id:3827, name: 'name1'}
o['3837'] = {id:3837, name: 'name1'}
o['3914'] = {id:3914, name: 'name1'}
o['3915'] = {id:3915, name: 'name1'}
o['3916'] = {id:3916, name: 'name1'}
o['3917'] = {id:3917, name: 'name1'}
o['3918'] = {id:3918, name: 'name1'}
o['3919'] = {id:3919, name: 'name1'}
o['3920'] = {id:3920, name: 'name1'}
o['3921'] = {id:3921, name: 'name1'}
o['3922'] = {id:3922, name: 'name1'}
o['3923'] = {id:3923, name: 'name1'}
o['3924'] = {id:3924, name: 'name1'}
o['3925'] = {id:3925, name: 'name1'}
o['3926'] = {id:3926, name: 'name1'}
o['3927'] = {id:3927, name: 'name1'}
o['3962'] = {id:3962, name: 'name1'}
o['3963'] = {id:3963, name: 'name1'}
o['3964'] = {id:3964, name: 'name1'}
o['4006'] = {id:4006, name: 'name1'}
o['4008'] = {id:4008, name: 'name1'}
o['4017'] = {id:4017, name: 'name1'}
o['4068'] = {id:4068, name: 'name1'}
o['4084'] = {id:4084, name: 'name1'}
o['4200'] = {id:4200, name: 'name1'}
o['4201'] = {id:4201, name: 'name1'}
o['4202'] = {id:4202, name: 'name1'}
o['4203'] = {id:4203, name: 'name1'}
o['4204'] = {id:4204, name: 'name1'}
o['4205'] = {id:4205, name: 'name1'}
o['4206'] = {id:4206, name: 'name1'}
o['4207'] = {id:4207, name: 'name1'}
o['4208'] = {id:4208, name: 'name1'}
o['4209'] = {id:4209, name: 'name1'}
o['4210'] = {id:4210, name: 'name1'}
o['4258'] = {id:4258, name: 'name1'}
o['4259'] = {id:4259, name: 'name1'}
o['4260'] = {id:4260, name: 'name1'}
o['4261'] = {id:4261, name: 'name1'}
o['4262'] = {id:4262, name: 'name1'}
o['4263'] = {id:4263, name: 'name1'}
o['4264'] = {id:4264, name: 'name1'}
o['4323'] = {id:4323, name: 'name1'}
o['4333'] = {id:4333, name: 'name1'}
o['4490'] = {id:4490, name: 'name1'}
o['5110'] = {id:5110, name: 'name1'}
o['5263'] = {id:5263, name: 'name1'}
o['5516'] = {id:5516, name: 'name1'}
o['5921'] = {id:5921, name: 'name1'}
o['7442'] = {id:7442, name: 'name1'}
o['9168'] = {id:9168, name: 'name1'}
o['9274'] = {id:9274, name: 'name1'}
o['10262'] = {id:10262, name: 'name1'}
o['10663'] = {id:10663, name: 'name1'}
o['11031'] = {id:11031, name: 'name1'}
o['12024'] = {id:12024, name: 'name1'}
o['12537'] = {id:12537, name: 'name1'}
o['13566'] = {id:13566, name: 'name1'}
o['13630'] = {id:13630, name: 'name1'}
o['13699'] = {id:13699, name: 'name1'}
o['14239'] = {id:14239, name: 'name1'}
o['14265'] = {id:14265, name: 'name1'}
o['14363'] = {id:14363, name: 'name1'}
o['15249'] = {id:15249, name: 'name1'}
o['15608'] = {id:15608, name: 'name1'}
o['16200'] = {id:16200, name: 'name1'}
o['16300'] = {id:16300, name: 'name1'}
o['18241'] = {id:18241, name: 'name1'}
o['18269'] = {id:18269, name: 'name1'}
o['18370'] = {id:18370, name: 'name1'}
o['18425'] = {id:18425, name: 'name1'}
o['18517'] = {id:18517, name: 'name1'}
o['19193'] = {id:19193, name: 'name1'}
o['19523'] = {id:19523, name: 'name1'}
o['22337'] = {id:22337, name: 'name1'}
o['23411'] = {id:23411, name: 'name1'}
o['24590'] = {id:24590, name: 'name1'}
o['25285'] = {id:25285, name: 'name1'}
o['25309'] = {id:25309, name: 'name1'}
o['25454'] = {id:25454, name: 'name1'}
o['25597'] = {id:25597, name: 'name1'}
o['26025'] = {id:26025, name: 'name1'}
o['27151'] = {id:27151, name: 'name1'}
o['27842'] = {id:27842, name: 'name1'}
o['74413'] = {id:74413, name: 'name1'}
o['79953'] = {id:79953, name: 'name1'}
o['89026'] = {id:89026, name: 'name1'}
o['89027'] = {id:89027, name: 'name1'}

  };
</script>

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
Manual Array Lookup
var ids = [3917,29938,5516,32994,999999];
var pos = 0;
for (var x = 0; x < ids.length; x++) {
  for (var i = 0; i < a1.length; i++) {
    if (a1[i].id === ids[pos]) {
      result = a1[i];
      break;
    }
  }
}
pending…
Holey Array by Index
var ids = [3917,29938,5516,32994,999999];
var pos = 0;
for (var x = 0; x < ids.length; x++) {
   var result = a2[ids[pos]];
}
pending…
Object by Key
var ids = [3917,29938,5516,32994,999999];
var pos = 0;
for (var x = 0; x < ids.length; x++) {
   var result = o[ids[pos]];
}
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. Here’s a list of current revisions for this page:

0 comments

Add a comment