JS编程建议——28:使用查表法提高条件检测的性能

建议28:使用查表法提高条件检测的性能
当有大量离散值需要测试时,使用if和switch都比使用查表法要慢得多。在JavaScript中查表法可通过数组或普通对象实现,查表法访问数据比if和switch更快,特别是当条件体的数目很大时。与if和switch相比,查表法不仅非常快,而且当需要测试的离散值数量非常大时,也有助于保持代码的可读性。
例如,在下面代码中,使用switch检测value值。

  1. switch(value) {
  2. case 0:
  3. return result0;
  4. case 1:
  5. return result1;
  6. case 2:
  7. return result2;
  8. case 3:
  9. return result3;
  10. case 4:
  11. return result4;
  12. case 5:
  13. return result5;
  14. case 6:
  15. return result6;
  16. case 7:
  17. return result7;
  18. case 8:
  19. return result8;
  20. case 9:
  21. return result9;
  22. default:
  23. return result10;
  24. }
    使用switch结构检测value值的代码所占的空间可能与switch的重要性不成比例,代码很笨重。整个结构可以用一个数组查询替代:
  25. var results = [result0, result1, result2, result3,
    result4, result5, result6, result7, result8, result9, result10]
  26. return results[value];
    当使用查表法时,必须完全消除所有条件判断。操作转换成一个数组项查询或一个对象成员查询。使用查表法的一个主要优点:由于没有条件判断,当候选值数量增加时,基本上不会增加额外的性能开销。查表法常用于一个键和一个值形成逻辑映射的领域,而switch更适合于每个键需要一个独特的动作或一系列动作的场合。
上一篇:springboot发送http请求


下一篇:Redis主从复制和集群配置