java 高性能运算--switch 替代方案

[size=small]
Java 原生的语法糖中存在很多种 易于阅读,效率略低的方案,我们可以适当改写。

比如 switch 语法糖。

[/size]


int re = 0;
for(int i=0;i<10000000;i++){
re = switch(i);
}

protected int switch(int z){
int i = z%10+1;
switch(i){
case 1: return 3;
case 2:return 6;
case 3:return 7;
case 4:return 8;
case 5:return 10;
case 6:return 16;
case 7:return 18;
case 8:return 20;
default:return -1;
}
}


switch 本身的性能并不差,但是仍存在可以提高的空间,尤其在随机次数比较大的高频调用中。

我们可以换一种思路,来取得比较可观的效果。


int re = 0;
int [] sw = new int[]{3,6,7,8,10,16,18,20};
for(int i=0;i<100000000;i++){
re = arrayInt(sw,i);
}

protected int arrayInt(int []sw,int z){
int i = z%10+1;

if(i>7 || i<1){
return -1;// 缺省值
}else{
return sw[i];
}
}


这种思路 相比与switch 分支判断来说,效率有所提升,因为对数据的随机访问是非常快的。

你可能感兴趣的:(java,服务器性能优化)