Switch vs Hash vs Others (v28)

Revision 28 of this benchmark created on


Setup

var index = 0;
  var foo = 0;
  var cached = {};
  
  var cases = [];
  cases[0] = function() { foo++ };
  cases[1] = function() { foo++ };
  cases[2] = function() { foo++ };
  cases[3] = function() { foo++ };
  cases[4] = function() { foo++ };
  cases[5] = function() { foo++ };
  cases[6] = function() { foo++ };
  cases[7] = function() { foo++ };
  cases[8] = function() { foo++ };
  cases[9] = function() { foo++ };

Test runner

Ready to run.

Testing in
TestOps/sec
Switch
for (index = 0; index < 10; index++) {
  switch (index) {
  case 0:
    cases[0](); break;
  case 1:
    cases[1](); break;
  case 2:
    cases[2](); break;
  case 3:
    cases[3](); break;
  case 4:
    cases[4](); break;
  case 5:
    cases[5](); break;
  case 6:
    cases[6](); break;
  case 7:
    cases[7](); break;
  case 8:
    cases[8](); break;
  case 9:
    cases[9](); break;
  }
}
ready
Hash
for (index = 0; index < 10; index++) {
  cases[index]();
}
ready
Cached Hash
for (index = 0; index < 10; index++) {
  cached = cases[index];
  cached();
}
ready
If ===
for (index = 0; index < 10; index++) {
  if (index === 0) {
    cases[0]();
  } else if (index === 1) {
    cases[1]();
  } else if (index === 2) {
    cases[2]();
  } else if (index === 3) {
    cases[3]();
  } else if (index === 4) {
    cases[4]();
  } else if (index === 5) {
    cases[5]();
  } else if (index === 6) {
    cases[6]();
  } else if (index === 7) {
    cases[7]();
  } else if (index === 8) {
    cases[8]();
  } else if (index === 9) {
    cases[9]();
  }
}
ready
If ==
for (index = 0; index < 10; index++) {
  if (index == 0) {
    cases[0]();
  } else if (index == 1) {
    cases[1]();
  } else if (index == 2) {
    cases[2]();
  } else if (index == 3) {
    cases[3]();
  } else if (index == 4) {
    cases[4]();
  } else if (index == 5) {
    cases[5]();
  } else if (index == 6) {
    cases[6]();
  } else if (index == 7) {
    cases[7]();
  } else if (index == 8) {
    cases[8]();
  } else if (index == 9) {
    cases[9]();
  }
}
ready

Revisions

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