Java代码优化

来源:互联网 发布:全面战争系列 知乎 编辑:程序博客网 时间:2024/06/05 06:28
1. StringBuffer代替String
如果知道字符串容量,最好刚开始 StringBuffer buffer = new StringBuffer(30);

2. 初始化的时候分配容量 Vector vect =new Vector(100);

3.优化循环体
Vector vect = new Vector(1000); 
for( inti=0; i<vect.size(); i++){
 ...
}
优化后 =>
int size = vect.size();
for( int i=0; i>size; i++){
 ...
}

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;
 }
}
4. 对象使用时再创建(new)
应该尽量重复使用一个对象,而不是声明新的同类对象。一个重用对象的方法是改变对象的值,如可以通过setValue之类的方法改变对象的变量达到重用的目的。

5.变量的注意事项
  尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack) 中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。 
  尽量使用静态变量,即加修饰符static,如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使他所有的实例都共享这个变量。

6. 方法调用
不影响可读性等情况下,可以把几个小的方法合成一个大的方法。
在方法前加上final,private关键字有利于编译器的优化。

7. 慎用异常处理
异常是Java的一种错误处理机制,对程序来说是非常有用的,但是异常对性能不利。抛出异常首先要创建一个新的对象,并进行相关的处理,造成系统的开销,所以异常应该用在错误处理的情况,不应该用来控制程序流程,流程尽量用while,if等处理。
在不是很影响代码健壮性的前提下,可以把几个try/catch块合成一个。

8.同步
同步主要出现在多线程的情况,为多线程同时运行时提供对象数据安全的机制,应用多线程为了获得性能的提升,应该尽可能减少同步。 
如果需要同步的地方,可以减少同步的代码段,如只同步某个方法或函数,而不是整个代码。

9.使用Java系统API
  Java的API一般都做了性能的考虑,如果完成相同的功能,优先使用API而不是自己写的代码.
例如:当有大量数据的复制时,应该使用System.arraycopy()

10. I/O过程尽可能使用带有Buffer的类

11. Servlet中尽量不使用同步,不保存太多信息在HttpSession中,如有必要用户退出时清除Session(invalidate())

12. EJB 
  • 缓存Home接口 
  • 封装Entity Bean 
  • 释放有状态的Session Bean 

13. 数据库访问
  • 使用速度快的JDBC驱动 
  • 使用JDBC连接池
  • 缓存DataSource
  • 关闭所有使用的资源 
  •  大型数据量处理,直接使用SQL
  • 缓存经常使用的数据
0 0