提高J2SE性能的代码技巧(上)

        www.InnovateDigital.com 整理

 

1.JAVA开发工具集(JDK)


      ■ 设计了一组通用用途的类

      ■ 设计的质量和实现多样化

         一 有些部分设计和实现得很好

         一 而有些部分...

      ■ 你可以访问JDK的源代码

         一  %JAVA_HOME%\src.jar

         一 不要直接修改源代码,但如果识别出一个JDK的方法是一个瓶颈,检查源代码以理解为什么

 

2.数据结构和算法


      ■ 推荐JAVA集合框架

         一 指南 java.sun.com/docs/books/tutorial/collections

      ■ 设计得很好的基本的数据结构和算法

Java performance

 

3.集合框架


Java performance

      ■ 调换实现达到不同的性能特性

 

4.集合框架:接口与具体类


      ■ 面向接口编程,而不是具体类

         一 特别是对于方法参数

         一 在性能优化时更容易改变实现

Java performance

 

5.集合框架:具体类


      ■ 当一个集合创建时要消除动态增长的代价,为其指定一个实际初始大小

         一 一些具体类(如:ArrayList)的动态增长的代价是很高的

      ■ 在适当的地方考虑重用集合对象

         一  调用集合的clear()方法清楚它的所有元素

      ■ Object.hashCode()

         一  选择一个算法保证哈希表的统一分配

         一  覆盖继承的Object.hashCode()方法, 默认的实现返回的是对象引用值,没有展示一个一致的分配

         一  从不返回一个常量

         一 非常小心地改变键的值的底层状态

 

6.集合框架:实现数据结构


      ■ 如果一定要实现自己的数据结构,依赖于集合接口实现你的类

         一 可以使用java.util.Collections工具方法恰当地实现你的具体数据结构

      ■ 扩大数据结构集合,你可以插入其它的开发成果

 

7.集合框架:基础算法


      ■ Java.util.Collections类里的算法

         一 sort(…..)

           以升序重新排列List的元素

           轻微地优化MergeSort-O(nlog(n))的版本

         一 binarySearch(….)

           在一个已排序的List里查找指定的元素

         一 极限值

           min(…) max(….)

         一 其它

           reverse(….),fill(….), copy(…)

 

8.数组


      ■ 数组与ArrayList与Vector

         一 数组的速度大约比ArrayList快十倍

         一 数组的速度大约比Vector快40倍

         一 ArrayList的速度大约比Vevtor快3-4倍

      ■ 当拷贝一个数组的元素到另一个数组时,使用System.arrycopy(…)

 

9.数组:基础算法


      ■ JAVA2的java.util.Arrays类提供了一组重载方法,为基础数组实现了最佳化的算法(与java.util.Collections类相似)

      ■ Java.util.Arrays类的里的算法

         一 binarySearch(…)

         一 equals(…)

         一 fill(…)

         一 sort(…)