1.循环中;
1)在重要的循环里,消除循环终止判断时的方法调用。
例如:将
for(int i=0; i<collection.size();i++){ ... }
替换为…
尽量减少对变量的重复计算
for(int i=0; n=collection.size();i<n;i++){...}
2) 通常把大循环放在里面,把小循环放在外面
例如:将
for(int i=0;i<10;i++) {
for(int j=0; j<1000000;j++) {}
}
3) 通常,把与循环index不相关的移到循环的外面
for(int i=0; terminal=x.length;i<terminal;i++){
x =x/scaleA *scaleB;
}
应该该成:Double scale = scaleB*scaleA;for(int i=0;terminal=x.length;i<terminal;i++){x = x/scale ;}
4)循环内不要创建对象的应用
for(inti=1;i<=domainCount;i++){ .
AuditResult auditResult = new AuditResult();
}
这种做法会在内存中保存N份这个对象的引用//会浪费大量的内存空间,改为
AuditResult auditResult;
for(int i=1;i<=domainCount;i++){
auditResult=new AuditResult();
..
}
2.字符串处理;
1)字符串拼接使用StringBuilder替代String的“+”;
2)在不需要考虑现成安全的情况下使用StringBuilder替代StringBuffer;
3.变量和常量的处理;
1)在重要的循环里使用基本数据类型;
2)对所有的常量代数表达式使用static final修饰符;
3)不要重复初始化变量;
4)如果不考虑某个类的可扩展尽量将该类类增加final修饰符;
5)尽量使用局部变量,类变量访问速度比局部变量慢;
4.同步机制;
1)在使用同步机制时,应尽量使用方法同步代替代码块同步;
2)ConcurrentHashMap去替代Vector,性能更高;
5.异常处理;
1)不要在循环中使用trycatch;
2)因为trycatch的执行开销是很大的,所以不要在不需要trycatch的地方,也加上,让catch的代码块额外增加;
6.算术运算;
1)乘除法如果能用移位表示尽量用移位运算;