if-else-vs-hash

Benchmark created by if-else-vs-hash on


Preparation HTML

<script>
  var EFFECT_NULL = "0";      
  var EFFECT_GET = "1";      
  var EFFECT_ADD = "2";       
  var EFFECT_ADDP = "3";     
  var EFFECT_ODDS = "4";     
  var EFFECT_SPEED = "5";   
  var EFFECT_RISE = "6";    
  var EFFECT_TRIBUTE = "7";  
  var EFFECT_DRAWING = "8";   
  var EFFECT_FAMOUS = "9";  
  
  function originalGetEffect(xmlEffect){
      if (xmlEffect == "get") {
          return EFFECT_GET;
      }else if (xmlEffect == "add") {
          return EFFECT_ADD;
      }else if (xmlEffect == "addp") {
          return EFFECT_ADDP;
      }else if (xmlEffect == "odds") {
          return EFFECT_ODDS;
      }else if (xmlEffect == "speed") {
          return EFFECT_SPEED;
      }else if (xmlEffect == "rise") {
          return EFFECT_RISE;
      }else if (xmlEffect == "tribute") {
          return EFFECT_TRIBUTE;
      }else if (xmlEffect == "drawing") {
          return EFFECT_DRAWING;
      }else if (xmlEffect == "famous") {
          return EFFECT_FAMOUS;
      }else{
          return EFFECT_NULL;
      }
  }
  
  var improvedGetEffect = (function () {
    var hash =  {
      get: EFFECT_GET,
      add: EFFECT_ADD,
      addp: EFFECT_ADDP,
      odds: EFFECT_ODDS,
      speed: EFFECT_SPEED,
      rise: EFFECT_RISE,
      tribute: EFFECT_TRIBUTE,
      drawing: EFFECT_DRAWING,
      famous: EFFECT_FAMOUS
    };
    return function(effect) {
      return hash[effect] || EFFECT_NULL;
    };
  }());
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
if-else
var s = originalGetEffect('famous');
ready
hash
var t = improvedGetEffect('famous');
ready

Revisions

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

  • Revision 1: published by if-else-vs-hash on