If-else vs. switch vs. lookup table (v28)

Revision 28 of this benchmark created on


Setup

function andOrTest(stuff) {
      return (stuff === "pizza" && "food") ||
        (stuff === "house" && "building") ||
        (stuff === "table" && "furniture") ||
        (stuff === "car" && "driving") ||
        (stuff === "water" && "drink") ||
        (stuff === "air" && "nothing") || (true && undefined);
    };
    
    function inlineTest(stuff) {
      return (stuff === "pizza") ? "food" :
        (stuff === "house") ? "building" :
        (stuff === "table") ? "furniture" :
        (stuff === "car") ? "driving" :
        (stuff === "water") ? "drink" :
        (stuff === "air") ? "nothing" : '';
    };
    
    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;
      }
    };
    
    function lookupTest(stuff) {
      return {
        "pizza": "food",
        "house": "building",
        "table": "furniture",
        "car": "driving",
        "water": "drink",
        "air": "nothing"
      }[stuff];
    };

Test runner

Ready to run.

Testing in
TestOps/sec
if else
ifElseTest("air");
ready
switch
switchTest("air");
ready
lookup table
lookupTest("air");
ready
andOrTest
andOrTest("air");
ready
inlineIfTest
inlineTest("air");
ready

Revisions

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