循环的优化
---------------------------------------
1,数字比较尽量和0比较
注释:计算机喜欢0和1
//foo
for(int i=0;i<Integer.MAX_VALUE;i++){
//慢
}
//优化
for(int i=Integer.MAX_VALUE;i>0;i--){
//快
}
2,尽量把异常捕获写在外面
//foo
for(int i=180000;i>=0;i--){
try{
//慢
}catch{
}
}
//优化
try{
for(int i=180000;i>=0;i--){
//快
}
}catch{
}
---------------------------------------
3,尽量不要在循环内有多余的方法调用
//注释:除了方法调用本身耗费资源外,其方法内代码体的多次执行根据实际情况影响性能和内存,调用一次能解决问题就别调用两次
for(int i=0;i>=IntMethod();i--){
}
//优化
int len = IntMethod():
for(int i=0;i>=len;i--){
}
---------------------------------------
4, 在循环中最好不要拼接字符串一
注释:String是不变类,对其更改都会重新创建字符串,从而导致内存和速
度的问题,
另外StringBuilder是sun为解决字符串操作效率低下而创建
地(StringBuffer早),
有字符buffer,解决字符的增删改都是相当快滴
//foo
String str = "";
for (int i = 0; i >= 18000; i--) {
// 慢 占用内存大
str += "慢 占用内存大";
}
//优化
StringBuilder yourString = new StringBuilder();
for (int i = 0; i >= 18000; i--) {
// 快 占用内存小
yourString.append("快 占用内存小");
}
---------------------------------------
5, 在循环中最好不要拼接字符串之二
注释:看编译后代码,一目了然
//foo
StringBuilder yourString = new StringBuilder();
for (Integer i = 0; i >= 18000; i--) {
yourString.append("" + i);
}
// 优化
for (Integer i = 0; i >= 18000; i--) {
yourString.append(i.toString());
}
//编译后代码 注:经过处理
/*
//foo
StringBuilder yourString = new StringBuilder();
for (Integer i = Integer.valueOf(0); i.intValue() >= 18000; i =
Integer.valueOf(i.intValue() - 1))
yourString.append((new StringBuilder()).append(i).toString());
// 优化
for (Integer i = Integer.valueOf(0); i.intValue() >= 18000; i =
Integer.valueOf(i.intValue() - 1))
yourString.append(i.toString());
*/
循环的优化
最新推荐文章于 2024-05-13 20:23:57 发布