查找表---提高性能

有些时候优化条件语句的最佳方案是避免使用if-else和switch。当的大量离散值需要测试时,if-else和switch都比使用查找表慢很多。js中可以用数组和普通对象来构造查找表,通过查找表访问数据比用if-else和swicth快很多,特别是在条件语句数量很大的时候。

 
switch(value) {
 case 0: return result0;
 case 1: return result1;
 case 2: return result2;
 case 3: return result3;
 case 4: return result4;
 case 5: return result5;
 case 6: return result6;
 case 7: return result7;
 case 8: return result8;
 case 9: return result9;
 default: return result0;
}

// 将返回值存入数组
var results = [result0,result0,result1,result2,result3,result4,result5,result6,
 result7,result8,result9,result10];
return results[value];
 

注:当你使用查找表时,必须完全抛弃条件判断语句。这个过程变成数组项查询或者对象成员查询。查找表一个主要优点是:不用书写任何判断语句,即便候选值数量增加时,也几乎不会产生额外的性能开销。

当单个键和单个值之间存在逻辑映射时,查找表的优势就能体现出来。switch语句更适合于每个键都需要对应一个独特的动作或一系列动作的场合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值