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

Revision 3 of this benchmark created by Jonatas Miguel on


Setup

function ifElseTest(stuff) {
      if(stuff === 1) {
        return "food";
      } else if (stuff === 2) {
        return "building";
      } else if (stuff === 3) {
        return "furniture";
      } else if (stuff === 4) {
        return "driving";
      } else if (stuff === 5) {
        return "drink";
      } else if (stuff === 6) {
        return "nothing";
      }
    };
    
    function switchTest(stuff) {
      switch (stuff) {
        case 1:
          return "food";
        break;
    
        case 2:
          return "building";
        break;
    
        case 3:
          return "furniture";
        break;
    
        case 4:
          return "driving";
        break;
    
        case 5:
          return "drink";
        break;
     
        case 6:
          return "nothing";
        break;
      }
    };
    
    var lookupTable = {
      1: function() {
        return "food";
      },
      2: function() {
        return "building";
      },
      3: function() {
        return "furniture";
      },
      4: function() {
        return "driving";
      },
      5: function() {
        return "drink";
      },
      6:  function() {
        return "nothing";
      }
    };
    
    var lookupArray = [
      undefined,
      function() {
        return "food";
      },
      function() {
        return "building";
      },
      function() {
        return "furniture";
      },
      function() {
        return "driving";
      },
      function() {
        return "drink";
      },
      function() {
        return "nothing";
      }
    ];

Test runner

Ready to run.

Testing in
TestOps/sec
if else
ifElseTest(1);
ifElseTest(5);
ifElseTest(6);
ready
switch
switchTest(1);
switchTest(5);
switchTest(6);
ready
lookup table - strings
lookupTable['1']();
lookupTable['5']();
lookupTable['6']();
ready
lookup array
lookupArray[1]();
lookupArray[5]();
lookupArray[6]();
ready
lookup table - integers
lookupTable[1]();
lookupTable[5]();
lookupTable[6]();
ready

Revisions

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