Tests:
  • switch/case

    x
     
    const elementAction = {
      a: 1,
      b: 2,
      c: 3,
    };
    function func() {
      switch (true) {
        case Object.hasOwn(elementAction, 'foo'):
          return false;
        case Object.hasOwn(elementAction, 'bar'):
          return false;
        case Object.hasOwn(elementAction, 'baz'):
          return false;
        case Object.hasOwn(elementAction, 'bazz'):
          return false;
        case Object.hasOwn(elementAction, 'fooz'):
          return false;
        case Object.hasOwn(elementAction, 'foob'):
          return false;
        case Object.hasOwn(elementAction, 'doob'):
          return false;
        case Object.hasOwn(elementAction, 'bafz'):
          return false;
        case Object.hasOwn(elementAction, 'barz'):
          return false;
        case Object.hasOwn(elementAction, 'gas'):
          return false;
        case Object.hasOwn(elementAction, 'gaz'):
          return false;
        case Object.hasOwn(elementAction, 'daz'):
          return false;
        case Object.hasOwn(elementAction, 'dar'):
          return false;
        case Object.hasOwn(elementAction, 'har'):
          return false;
        case Object.hasOwn(elementAction, 'ooph'):
          return false;
        case Object.hasOwn(elementAction, 'phooph'):
          return false;
        default:
          return true;
      }
    }
    func();
  • Dictionary

     
    const elementAction = {
      a: 1,
      b: 2,
      c: 3,
    };
    const dictionary = [
      {
        key: 'foo',
        value: () => false,
      },
      {
        key: 'bar',
        value: () => false,
      },
      {
        key: 'baz',
        value: () => false,
      },
      {
        key: 'bazz',
        value: false,
      },
      {
        key: 'fooz',
        value: false,
      },
      {
        key: 'doob',
        value: false,
      },
      {
        key: 'bafz',
        value: false,
      },
      {
        key: 'barz',
        value: false,
      },
      {
        key: 'gas',
        value: false,
      },
      {
        key: 'gaz',
        value: false,
      },
      {
        key: 'daz',
        value: false,
      },
      {
        key: 'dar',
        value: false,
      },
      {
        key: 'har',
        value: false,
      },
      {
        key: 'ooph',
        value: false,
      },
      {
        key: 'phooph',
        value: false,
      },
      {
        key: 'foo',
        value: false,
      },
    ];
    function func() {
      const index = dictionary.indexOf(({ key }) => Object.hasOwn(elementAction, key));
      return index > -1 ? dictionary[index].value : true;
    }
    func();
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    switch/case
    Dictionary

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 5 months ago)
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Chrome 131 on Windows
View result in a separate tab
Test name Executions per second
switch/case 725270.8 Ops/sec
Dictionary 11907991.0 Ops/sec