您的位置:首页 > 编程语言 > Java开发

java性能优化方法

2014-07-19 17:15 246 查看
 <1>依赖语言     时间是以复制为单位时间
                    运算 示例 标准时间

                    本地赋值 i=n;     1.0

                    实例赋值 this.i=n;     1.2

                    int 增值 i++;        1.5

                    byte 增值 b++; 2.0

short 增值 s++; 2.0

float 增值 f++; 2.0

double 增值 d++; 2.0

空循环 while(true) n++; 2.0

三元表达式 (x<0) ?-x : x 2.2

算术调用 Math.abs(x); 2.5

数组赋值 a[0] = n; 2.7

long 增值 l++; 3.5

方法调用 funct(); 5.9

throw 或catch 异常 try{ throw e; }或catch(e){} 320

同步方法调用 synchMehod(); 570

新建对象 new Object(); 980

新建数组 new int[10]; 3100

<2>特殊情况
        1、字串的开销
                字串连接运算符+看似简单,但实际需要消耗大量系统资源。
                System.out.println("heading" + s + "trailer" + t);上述语句要求新建一个StringBuffer(字串缓冲),追加自变量,然后用toString()将结果转换回一个字 串。特别是能在一个循环里重复利用它的时候。通过在每次循环里禁止新建一个字串缓冲,可节
省980 单位的对象创建时间(如前所述)
        2、同步:
                在JDK 解释器中,调用同步方法通常会比调用不同步方法慢10 倍。经JIT 编译器处理后,这一性能 上的差距提升到50
到100 倍(注意前表总结的时间显示出要慢97 倍)。所以要尽可能避免使用同步方法— —若不能避免,方法的同步也要比代码块的同步稍快一些。
        3、重复利用对象:
                要花很长的时间来新建一个对象(根据前表总结的时间,对象的新建时间是赋值时间的 980 倍,而新建一个小数组的时间是赋值时间的3100 倍)。因此,最明智的做法是保存和更新老对象的字 段,而不是创建一个新对象。
        4、异常
                将小的try----catch块合并到一起。
        5、散列处理
                价格HashTable(需要造型的以及同步处理)换成HashMap。
        6、I/O
                应尽可能使用缓冲。
        7、使用API 类:
                尽量使用来自Java API 的类,因为它们本身已针对机器的性能进行了优化。这是用Java 难 于达到的。比如在复制任意长度的一个数组时,arraryCopy()比使用循环的速度快得多。
        8、 其他建议

■将重复的常数计算移至关键循环之外——比如计算固定长度缓冲区的buffer.length。

■static final(静态最终)常数有助于编译器优化程序。

■实现固定长度的循环。

■使用javac 的优化选项:-O。它通过内嵌static,final 以及private 方法,从而优化编译过的代码。注

意类的长度可能会增加(只对JDK 1.1 而言——更早的版本也许不能执行字节查证)。新型的“Just-intime”(

JIT)编译器会动态加速代码。

■尽可能地将计数减至0——这使用了一个特殊的JVM 字节码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息