If-else vs. switch vs. lookup table

JavaScript performance comparison

Test case created by Tobias Otte

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  function ifElseTest(stuff) {
    if(stuff === "pizza") {
      return "food";
    } else if (stuff === "house") {
      return "building";
    } else if (stuff === "table") {
      return "furniture";
    } else if (stuff === "car") {
      return "driving";
    } else if (stuff === "water") {
      return "drink";
    } else if (stuff === "air") {
      return "nothing";
    }
  };
  
  function switchTest(stuff) {
    switch (stuff) {
      case "pizza":
        return "food";
      break;
  
      case "house":
        return "building";
      break;
  
      case "table":
        return "furniture";
      break;
  
      case "car":
        return "driving";
      break;
  
      case "water":
        return "drink";
      break;
   
      case "air":
        return "nothing";
      break;
    }
  };
  
  var lookupTable = {
    "pizza": function() {
      return "food";
    },
    "house": function() {
      return "building";
    },
    "table": function() {
      return "furniture";
    },
    "car": function() {
      return "driving";
    },
    "water": function() {
      return "drink";
    },
    "air":  function() {
      return "nothing";
    }
  };

};
</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
if else
ifElseTest("pizza");
ifElseTest("water");
ifElseTest("air");
pending…
switch
switchTest("pizza");
switchTest("water");
switchTest("air");
pending…
lookup table
lookupTable["pizza"]();
lookupTable["water"]();
lookupTable["air"]();
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