1700451943
1700451944
String str=“Log file is ready……”;
1700451945
1700451946
for(int i=0;i<max;i++){
1700451947
1700451948
//此处生成三个对象
1700451949
1700451950
str+=“log”+i;
1700451951
1700451952
}
1700451953
1700451954
应该修改为:
1700451955
1700451956
StringBuilder sb=new StringBuilder(20000);
1700451957
1700451958
sb.append(“Log file is ready……”);
1700451959
1700451960
for(int i=0;i<max;i++){
1700451961
1700451962
sb.append(“log”+i);
1700451963
1700451964
}
1700451965
1700451966
String log=sb.toString();
1700451967
1700451968
(5)使用非线性检索
1700451969
1700451970
如果在ArrayList中存储了大量的数据,使用indexOf查找元素会比java.utils.Collections.binarySearch的效率低很多,原因是binarySearch是二分搜索法,而indexOf使用的是逐个元素比对的方法。这里要注意:使用binarySearch搜索时,元素必须进行排序,否则准确性就不可靠了。
1700451971
1700451972
(6)覆写Exception的fillInStackTrace方法
1700451973
1700451974
我们在第8章中提到fillInStackTrace方法是用来记录异常时的栈信息的,这是非常耗时的动作,如果我们在开发时不需要关注栈信息,则可以覆盖之,如下覆盖fillInStackTrace的自定义异常会使性能提升10倍以上:
1700451975
1700451976
class MyException extends Exception{
1700451977
1700451978
public Throwable fillInStackTrace(){
1700451979
1700451980
return this;
1700451981
1700451982
}
1700451983
1700451984
}
1700451985
1700451986
(7)不建立冗余对象
1700451987
1700451988
不需要建立的对象就不能建立,说起来很容易,要完全遵循此规则难度就很大了,我们经常就会无意地创建冗余对象,例如这样一段代码:
1700451989
1700451990
public void doSomething(){
1700451991
1700451992
//异常信息
[
上一页 ]
[ :1.700451943e+09 ]
[
下一页 ]