查找表---提高性能

有些时候优化条件语句的最佳方案是避免使用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语句更适合于每个键都需要对应一个独特的动作或一系列动作的场合。

你可能感兴趣的:(高性能)