switchperf (v2)

Revision 2 of this benchmark created on


Setup

var node = {
      operator: 'and'
    };
    var operator;
    var map = {
      'and': '&',
      'or': '|',
      'xor': '^',
      'rsh': '>>',
      'ursh': '>>>',
      'lsh': '<<'
    };
    var symbols = ['&', '|', '^', '>>', '>>>', '<<'];
    var names = ['and', 'or', 'xor', 'rsh', 'ursh', 'lsh'];

Test runner

Ready to run.

Testing in
TestOps/sec
switch
for (var i = 0; i < 1e6; i++) {
  switch (node.operator) {
    case 'and':
      if (!operator) operator = '&';
    case 'or':
      if (!operator) operator = '|';
    case 'xor':
      if (!operator) operator = '^';
    case 'rsh':
      if (!operator) operator = '>>';
    case 'ursh':
      if (!operator) operator = '>>>';
    case 'lsh':
      if (!operator) operator = '<<';
  }
}
ready
map
for (var i = 0; i < 1e6; i++) {
  operator = map[node.operator];
}
ready
indexOf
for (var i = 0; i < 1e6; i++) {
  operator = symbols[
    names.indexOf(node.operator)
  ];
}
ready

Revisions

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