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

Revision 6 of this benchmark created on


Setup

function ifElseTest(stuff) {
      if(stuff <= 3) {
        if (stuff === 1) return "food";
        if (stuff === 2) return "building";
        return "furniture";
      } else {
        if (stuff === 4) return "driving";
        if (stuff === 5) return "drink";
        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 = [
      function() {
        // do nothing
      },
      function() {
        return "food";
      },
      function() {
        return "building";
      },
      function() {
        return "furniture";
      },
      function() {
        return "driving";
      },
      function() {
        return "drink";
      },
      function() {
        return "nothing";
      }
    ];
    
    var lookupTableString = {
      a: function() {
        return "food";
      },
      b: function() {
        return "building";
      },
      c: function() {
        return "furniture";
      },
      d: function() {
        return "driving";
      },
      e: function() {
        return "drink";
      },
      f:  function() {
        return "nothing";
      }
    };
    
    
    var lookupTableNumericString = {
      '1': function() {
        return "food";
      },
      '2': function() {
        return "building";
      },
      '3': function() {
        return "furniture";
      },
      '4': function() {
        return "driving";
      },
      '5': function() {
        return "drink";
      },
      '6':  function() {
        return "nothing";
      }
    };

Test runner

Ready to run.

Testing in
TestOps/sec
if else
ifElseTest(1);
ifElseTest(2);
ifElseTest(3);
ifElseTest(4);
ifElseTest(5);
ifElseTest(6);
ready
switch
switchTest(1);
switchTest(2);
switchTest(3);
switchTest(4);
switchTest(5);
switchTest(6);
ready
lookup table - integer keys - string access
lookupTable['1']();
lookupTable['2']();
lookupTable['3']();
lookupTable['4']();
lookupTable['5']();
lookupTable['6']();
ready
lookup array
lookupArray[1]();
lookupArray[2]();
lookupArray[3]();
lookupArray[4]();
lookupArray[5]();
lookupArray[6]();
ready
lookup table - integer keys - integer access
lookupTable[1]();
lookupTable[2]();
lookupTable[3]();
lookupTable[4]();
lookupTable[5]();
lookupTable[6]();
ready
lookup table - string keys
lookupTableString['a']();
lookupTableString['b']();
lookupTableString['c']();
lookupTableString['d']();
lookupTableString['e']();
lookupTableString['f']();
ready
lookup table - numeric string keys - string access
lookupTableNumericString['1']();
lookupTableNumericString['2']();
lookupTableNumericString['3']();
lookupTableNumericString['4']();
lookupTableNumericString['5']();
lookupTableNumericString['6']();
ready
lookup table - numeric string keys - integer access
lookupTableNumericString[1]();
lookupTableNumericString[2]();
lookupTableNumericString[3]();
lookupTableNumericString[4]();
lookupTableNumericString[5]();
lookupTableNumericString[6]();
ready

Revisions

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