Java程序性能优化Tips

1,避免在循环条件中使用复杂表达式

在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快。
如在条件循环中,使用 for (int i = 0; i < v.size(); i++) ,可以考虑使用 for (int i = 0 , j = v.size() ; i < j ; i++)。能够减少函数调用,且v.size()还是一个同步的方法。
对于不会再多线程同时使用的容器,可以使用 ArrayList等代替Vector

2,为容器如List或者Map指定初始大小。

在能够估算容器大小的情况下,建议在初始化容器时指定大小,以避免频繁扩容导致的性能损失
其他容器,如StringBuffer, StringBuilder也可以参考

3,在finally中关闭资源。

在finally中关闭资源,如stream,connection等,能够避免资源泄露。
另外一个易疏忽的场景是,在使用对象池时,如果borrow了一个对象,最好在finally中归还,以免因使用中的异常导致无法归还。
jdk7之后出现try-with-resources,建议使用

4,使用’system.arraycopy ()’代替通过来循环复制数组

system.array会调用本地方法进行复制,比在java里复制快得多。熟悉jdk自带的一些方法,了解apache common项目中的类库,有益于提升工作效率和程序性能。

5,在可以使用final的地方使用final,如不可变成员变量,访问实例内变量的getter/setter方法,不会被改写的方法,甚至不需要继承的类。

编译器会将final的方法内联

6,如果只是查找单个字符的话,用charat()代替startswith()

前者直接下标读取数据,性能高于后者。

7,善用移位进行乘除运算

如果恰好是2的幂的变化,使用左移或者右移性能更好

8,避免在循环中进行耗资源的操作,如try-catch或者同步

9,尽可能的使用栈变量

如果可能,请使用局部变量作为你经常访问的变量

 

转载:http://www.zhouyoudao.com/javatips/

猜你喜欢

转载自cfyme.iteye.com/blog/2210022