1700452013
1700452014
Java的基本优化方法非常多,这里不再罗列,相信读者也有自己的小本本,上面所罗列的性能优化方法可能远比这里多,但是随着Java的不断升级,很多看似很正确的优化策略就逐渐过时了(或者说已经失效了),这一点还需要读者注意。最基本的优化方法就是自我验证,找出最佳的优化途径,提高系统性能,不可盲目信任。
1700452015
1700452016
1700452017
1700452018
1700452020
编写高质量代码:改善Java程序的151个建议 建议133:若非必要,不要克隆对象
1700452021
1700452022
通过clone方法生成一个对象时,就会不再执行构造函数了,只是在内存中进行数据块的拷贝,此方法看上去似乎应该比new方法的性能好很多,但是Java的缔造者们也认识到“二八原则”,80%(甚至更多)的对象是通过new关键字创建出来的,所以对new在生成对象(分配内存、初始化)时做了充分的性能优化,事实上,一般情况下new生成的对象比clone生成的性能方面要好很多,例如这样的代码。
1700452023
1700452024
private static class Apple implements Cloneable{
1700452025
1700452026
public Object clone(){
1700452027
1700452028
try{
1700452029
1700452030
return super.clone();
1700452031
1700452032
}catch(CloneNotSupportedException e){
1700452033
1700452034
throw new Error();
1700452035
1700452036
}
1700452037
1700452038
}}
1700452039
1700452040
public static void main(String[]args){
1700452041
1700452042
//循环10万次
1700452043
1700452044
final int maxLoops=10*10000;
1700452045
1700452046
int loops=0;
1700452047
1700452048
//开始时间
1700452049
1700452050
long start=System.nanoTime();
1700452051
1700452052
//“母”对象
1700452053
1700452054
Apple apple=new Apple();
1700452055
1700452056
while(++loops<maxLoops){
1700452057
1700452058
apple.clone();
1700452059
1700452060
}
1700452061
1700452062
long mid=System.nanoTime();
[
上一页 ]
[ :1.700452013e+09 ]
[
下一页 ]