Switch vs. hash

JavaScript performance comparison

Revision 14 of this test case created by Maciej Pawłowski

Info

Is a hash (array) really faster than a switch?

Preparation code

<script>
  var theVar = 'j';
 
  var cases = [];
  cases['a'] = function() { var i = 1; i+=1; return i; };
  cases['b'] = function() { var i = 1; i+=1; return i; };
  cases['c'] = function() { var i = 1; i+=1; return i; };
  cases['d'] = function() { var i = 1; i+=1; return i; };
  cases['e'] = function() { var i = 1; i+=1; return i; };
  cases['f'] = function() { var i = 1; i+=1; return i; };
  cases['g'] = function() { var i = 1; i+=1; return i; };
  cases['h'] = function() { var i = 1; i+=1; return i; };
  cases['i'] = function() { var i = 1; i+=1; return i; };
  cases['j'] = function() { var i = 1; i+=1; return i; };
</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
Switch
switch (theVar) {
case 'a':
 var i = 1; i+=1;
 break;
case 'b':
 var i = 1; i+=1;
 break;
case 'c':
 var i = 1; i+=1;
 break;
case 'd':
 var i = 1; i+=1;
 break;
case 'e':
 var i = 1; i+=1;
 break;
case 'f':
 var i = 1; i+=1;
 break;
case 'g':
 var i = 1; i+=1;
 break;
case 'h':
 var i = 1; i+=1;
 break;
case 'i':
 var i = 1; i+=1;
 break;
case 'j':
 var i = 1; i+=1;
 break;
default:
}
pending…
Hash
if (typeof cases[theVar] === 'function') {
 cases[theVar]();
} else {

}
pending…
Hash-cached
var fun = cases[theVar];

if (typeof fun === 'function') {
 fun();
} else {

}
pending…
Try catch
try{
 cases[theVar]();
}
catch(err)
{
}
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