1700451882
编写高质量代码:改善Java程序的151个建议 建议132:提升Java性能的基本方法
1700451883
1700451884
Java从诞生之日起就被质疑:字节码在JVM中运行是否会比机器码直接运行的效率会低很多?很多技术高手、权威网站都有类似的测试和争论,从而来表明Java比C(或C++)更快或效率相同。此类话题我们暂且不表(这类问题的争论没完没了,也许等到我们退休的时候,还想找个活动脑筋的方式,此类问题就会是最好的选择),我们先从如何提高Java的性能方面入手,看看怎么做才能让Java程序跑得更快,效率更高,吞吐量更大。
1700451885
1700451886
(1)不要在循环条件中计算
1700451887
1700451888
如果在循环(如for循环、while循环)条件中计算,则每循环一遍就要计算一次,这会降低系统效率,就比如这样的代码:
1700451889
1700451890
//每次循环都要计算count*2
1700451891
1700451892
while(i<count*2){
1700451893
1700451894
//Do Something
1700451895
1700451896
}
1700451897
1700451898
应该替换为:
1700451899
1700451900
//只计算一遍
1700451901
1700451902
int total=count*2;
1700451903
1700451904
while(i<total){
1700451905
1700451906
//Do Something
1700451907
1700451908
}
1700451909
1700451910
(2)尽可能把变量、方法声明为final static类型
1700451911
1700451912
假设要将阿拉伯数字转换为中文数字,其定义如下:
1700451913
1700451914
public String toChineseNum(int num){
1700451915
1700451916
//中文数字
1700451917
1700451918
String[]cns={“零”,“壹”,“贰”,“叁”,“肆”,“伍”,“陆”,“柒”,“捌”,“玖”};
1700451919
1700451920
return cns[num];
1700451921
1700451922
}
1700451923
1700451924
每次调用该方法时都会重新生成一个cns数组,注意该数组不会改变,属于不变数组,在这种情况下,把它声明为类变量,并且加上final static修饰会更合适,在类加载后就生成了该数组,每次方法调用则不再重新生成数组对象了,这有助于提高系统性能,代码如下。
1700451925
1700451926
//声明为类变量
1700451927
1700451928
final static String[]cns={“零”,“壹”,“贰”,“叁”,“肆”,“伍”,“陆”,“柒”,“捌”,“玖”};
1700451929
1700451930
public String toChineseNum(int num){
[
上一页 ]
[ :1.700451881e+09 ]
[
下一页 ]