||
本人最近在做一个项目的代码优化的工作,总结了一些感想,写出来,时间上,在项目早期就进行优化,会导致你的代码难以阅读,或者会影响运行。另一方面,在项目后期,你可能会发现之前所做的优化没有起到任何作用,白白浪费了时间和精力。正确的方式是,你应该将项目开发和优化当作两个独立的步骤来做。
1、根据条件使用符号整型变量
原则:无符号类型:除法和余数,循环计数,数组下标;有符号类型:整型到浮点的转化
例如:以“F”或者“f”为后缀(3.14f)的浮点常量才是float型的,否则默认为double型。
unsigned int i; i=i/10;优于int i;i=i/10;
2、大循环放里面小循环放外面
for(int i=0;i<5;i++){
.....
for(int j=0;j<10000;j++){
......
}
}
3、与循环不相关的尽量放外面
例如...
s=1;
for(int i=0;i<100;i++){
s=s/(k1*k2)
}
变成
s=1;
m=k1*k2;
for(int i=0;i<100;i++){
s=s/m;
}
4、尽量不要在循环中使用try{}catch{}
5、循环内不要创建大量的临时变量
例:for(int i=0;i<100;i++){
...
HelloKit helloKit=new HelloKit();
...
}应该变为:
HelloKit helloKit=null;
for(int i=0;i<100;i++){
...
helloKit=new HelloKit();
...
}
6、尽量使用懒加载:即需要时才创建
ArrayList arrayList=new ArrayList();
String str="hello"
if(j==10){
arrayList.add(str);
}
改为:
if(j==10){
String str="hello"
arrayList.add(str);
}
6、复制大量数据时使用System.arraycopy()命令
两个数组间的复制尽量不要用循环,用java提供的数组拷贝方法
public void arrayCopy(){
int[] array1= new int[20];
for(int i=0;i<20;i++){
array1=i;
}
int[] array2=new int[20];
System.arraycopy(array1,0,array2,0,20);
for(j=0;j<20;j++){
System.out.println(array2+",");
}
}
7、减少循环次数变量的读取
for(int i=0;i<list.length;i++){
}//这样每次都会判定i是否到了list.length边界,每次都需要进行边界大小的计算
改为:
for(int i=0,j=list.length;i<j;i++){
}//这样j是局部变量只需要初始化一次
8、switch()中,常用的case值放前面,不常用的放后面
9尽量使用局部变量
局部变量调用方法时候传递的参数以及在调研中产生的临时变量都保存在栈(stack)中,静态变量,实例变量都是在堆中(Heap)创建,速度较慢。
10、将类中不变的实例静态化
如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使得其它所有的实例都共享这个变量
11、尽量指定类的final修饰符
public final void doWork(){
......
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-21 11:16
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社