技术开发 频道

Java性能的优化

    由此可以看出,经过改进后的代码只生成了四个对象变量:STR_1,STR_2,STR_3和STR_BUF_1.你可能觉得少生成一个对象不会对程序的性能有很大的提高。但下面的代码段2的执行速度将是代码段1的2倍。因为代码段1生成了八个对象,而代码段2只生成了四个对象。

    代码段1:

String name= new StringBuffer(“HuangWeiFeng”);

name+=”is my”;

name+=”name”;

    代码段2:

StringBuffer name=new StringBuffer(“HuangWeiFeng”);

name.append(“is my”);

name.append(“name.”).toString();

    因此,充分的利用JAVA提供的库函数来优化程序,对提高JAVA程序的性能时非常重要的.其注意点主要有如下几方面;

    (1) 尽可能的使用静态变量(Static Class Variables)

    如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使他所有的实例都共享这个变量。

    例:

public class foo

{

SomeObject so=new SomeObject();

}

    就可以定义为:

public class foo

{

static SomeObject so=new SomeObject();

}

    (2) 不要对已生成的对象作过多的改变。

    对于一些类(如:String类)来讲,宁愿在重新生成一个新的对象实例,而不应该修改已经生成的对象实例。

    例:

String name=”Huang”;

name=”Wei”;

name=”Feng”;

    上述代码生成了三个String类型的对象实例。而前两个马上就需要系统进行垃圾回收处理。如果要对字符串进行连接的操作,性能将得更差。因为系统将不得为此生成更多得临时变量。如上例1所示。

    (3) 生成对象时,要分配给它合理的空间和大小

    JAVA中的很多类都有它的默认的空间分配大小。对于StringBuffer类来讲,默认的分配空间大小是16个字符。如果在程序中使用StringBuffer的空间大小不是16个字符,那么就必须进行正确的初始化。

    (4) 避免生成不太使用或生命周期短的对象或变量。

    对于这种情况,因该定义一个对象缓冲池。以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多。

    (5) 只在对象作用范围内进行初始化。

    JAVA允许在代码的任何地方定义和初始化对象。这样,就可以只在对象作用的范围内进行初始化。从而节约系统的开销。

    例:

SomeObject so=new SomeObject();

If(x==1) then

{

Foo=so.getXX();

}

    可以修改为:

if(x==1) then

{

SomeObject so=new SomeObject();

Foo=so.getXX();

}

0
相关文章