1:循环体的优化
比如:
for(int i=0;i<list.size();i++)...
可写成
int size=list.size();
for(int i=0;i<size;i++)....
这样的话 如果你的list的size有1000的话,可以少执行 list.size()1000次。
再看如下的代码片:
for (int i = 0;i <100000;i++)
if (i%10 == 9) {
... // 每十次执行一次
}
改写成也可以提高效率:
for(inti =0,j =10; i<100000; i++,j--){
if(j == 0){
... // 每十次执行一次
j = 10; }
}
所以,当有较大的循环时,应该检查循环内是否有效率不高的地方,寻找更优的方案加以改进。
2少用new初始化一个实例:
尽量少用new来初始化一个类的实例,当一个对象是用new进行初始化时,其构造函数链的所有构造函数都被调用到,所以new操作符是很消耗系统资源的,new一个对象耗时往往是局部变量赋值耗时的上千倍。同时,当生成对象后,系统还要花时间进行垃圾回收和处理。
比如:
for(int i=0;i<list.size();i++)...
可写成
int size=list.size();
for(int i=0;i<size;i++)....
这样的话 如果你的list的size有1000的话,可以少执行 list.size()1000次。
再看如下的代码片:
for (int i = 0;i <100000;i++)
if (i%10 == 9) {
... // 每十次执行一次
}
改写成也可以提高效率:
for(inti =0,j =10; i<100000; i++,j--){
if(j == 0){
... // 每十次执行一次
j = 10; }
}
所以,当有较大的循环时,应该检查循环内是否有效率不高的地方,寻找更优的方案加以改进。
2少用new初始化一个实例:
尽量少用new来初始化一个类的实例,当一个对象是用new进行初始化时,其构造函数链的所有构造函数都被调用到,所以new操作符是很消耗系统资源的,new一个对象耗时往往是局部变量赋值耗时的上千倍。同时,当生成对象后,系统还要花时间进行垃圾回收和处理。