object vs array vs switch vs if

JavaScript performance comparison

Revision 9 of this test case created

Info

Changed the get value from 29 to 0.

Preparation code

 
<script>
Benchmark.prototype.setup = function() {
    var hash = {
        0:  'a' ,
      1:  'b' ,
      2:  'c' ,
      3:  'd' ,
      4:  'e' ,
      5:  'f' ,
      6:  'g' ,
      7:  'h' ,
      8:  'a' ,
      9:  'b' ,
      10:  'a' ,
      11:  'b' ,
      12:  'c' ,
      13:  'd' ,
      14:  'e' ,
      15:  'f' ,
      16:  'g' ,
      17:  'h' ,
      18:  'a' ,
      19:  'b' ,
      20:  'a' ,
      21:  'b' ,
      22:  'c' ,
      23:  'd' ,
      24:  'e' ,
      25:  'f' ,
      26:  'g' ,
      27:  'h' ,
      28:  'a' ,
      29: 'b'
    },
   
    array = [
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b',
      'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b'
    ],
   
    value = 0,
   
    getArray = function(){
      return array[value];
    },
   
    getObject = function(){
      return hash[value];
    },
   
    getSwitch = function(){
      switch(value) {
        case 0: return 'a'; break;
        case 1: return 'b'; break;
        case 2: return 'c'; break;
        case 3: return 'd'; break;
        case 4: return 'e'; break;
        case 5: return 'f'; break;
        case 6: return 'g'; break;
        case 7: return 'h'; break;
        case 8: return 'a'; break;
        case 9: return 'b'; break;
        case 10: return 'a'; break;
        case 11: return 'b'; break;
        case 12: return 'c'; break;
        case 13: return 'd'; break;
        case 14: return 'e'; break;
        case 15: return 'f'; break;
        case 16: return 'g'; break;
        case 17: return 'h'; break;
        case 18: return 'a'; break;
        case 19: return 'b'; break;
        case 20: return 'a'; break;
        case 21: return 'b'; break;
        case 22: return 'c'; break;
        case 23: return 'd'; break;
        case 24: return 'e'; break;
        case 25: return 'f'; break;
        case 26: return 'g'; break;
        case 27: return 'h'; break;
        case 28: return 'a'; break;
        case 29: return 'b'; break;
      }
    }
    getIf = function(){
        if ( 0===value) return 'a';
        if ( 1===value) return 'b';
        if ( 2===value) return 'c';
        if ( 3===value) return 'd';
        if ( 4===value) return 'e';
        if ( 5===value) return 'f';
        if ( 6===value) return 'g';
        if ( 7===value) return 'h';
        if ( 8===value) return 'a';
        if ( 9===value) return 'b';
        if ( 10===value) return 'a';
        if ( 11===value) return 'b';
        if ( 12===value) return 'c';
        if ( 13===value) return 'd';
        if ( 14===value) return 'e';
        if ( 15===value) return 'f';
        if ( 16===value) return 'g';
        if ( 17===value) return 'h';
        if ( 18===value) return 'a';
        if ( 19===value) return 'b';
        if ( 20===value) return 'a';
        if ( 21===value) return 'b';
        if ( 22===value) return 'c';
        if ( 23===value) return 'd';
        if ( 24===value) return 'e';
        if ( 25===value) return 'f';
        if ( 26===value) return 'g';
        if ( 27===value) return 'h';
        if ( 28===value) return 'a';
        if ( 29===value) return 'b';
    }
   
};
</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
Array Access
getArray();
pending…
Switch Access
getSwitch();
pending…
Object Access
getObject();
pending…
If Access
getIf();
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