Switch/Case vs. If/Else vs. Hash Lookup

Benchmark created by Tobias Schneider on


Preparation HTML

<script>
 var cases = [];
 
 cases[0] = function() {
  var a = new Date + 1;
 };
 cases[1] = function() {
  var b = new Date + 2;
 };
 cases[2] = function() {
  var c = new Date + 3;
 };
 cases[3] = function() {
  var d = new Date + 4;
 };
 cases[4] = function() {
  var e = new Date + 5;
 };
 defaultCase = function() {
  var f = new Date + 6;
 }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
Switch/Case
for (var i = 0; i < 6; i++) {
 switch (i) {
 case 0:
  var a = new Date + 1;
  break;
 case 1:
  var b = new Date + 2;
  break;
 case 2:
  var c = new Date + 3;
  break;
 case 3:
  var d = new Date + 4;
  break;
 case 4:
  var e = new Date + 5;
  break;
 default:
  var f = new Date + 6;
 }
}
ready
If/Else
for (var i = 0; i < 6; i++) {
 if (i === 0) {
  var a = new Date + 1;
 } else if (i === 1) {
  var b = new Date + 2;
 } else if (i === 2) {
  var c = new Date + 3;
 } else if (i === 3) {
  var d = new Date + 4;
 } else if (i === 4) {
  var e = new Date + 5;
 } else {
  var f = new Date + 6;
 }
}
ready
Hash Lookup
for (var i = 0; i < 6; i++) {
 (cases[i] && cases[i]()) || defaultCase();
}
ready

Revisions

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

  • Revision 1: published by Tobias Schneider on
  • Revision 2: published by Jens Arps on