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

java 常用最实用的性能优化...

2017-11-02 11:03 337 查看
   工作中,很多时候我们只是为了完成任务而编码...缺少思考的时间...下面谈谈几个优化...虽然很基础,但是很实用.....

  

    嵌套for循环...说到循环,大家一定没少用...但是有时候就是因为一行代码的顺序直接影响整个方法的响应时间...

   

long stratTime = System.nanoTime();  

for (int i = 0; i < 10000000; i++) {  

    for (int j = 0; j < 10; j++) {  

         system.out.println("那你很棒棒哦!!!") 

    }  

}  

long endTime = System.nanoTime();  

System.out.println("总耗时:"+ (endTime - stratTime)); 

输出结果:  总耗时:4573255

 

改成 :  

     long stratTime = System.nanoTime();  
for (int i = 0; i <10 ; i++) {  
   for (int j = 0; j < 10000000; j++) {  
system.out.println("那你很棒棒哦!!!")          
  }  
}  
long endTime = System.nanoTime();  
System.out.println("总耗时:"+(endTime - stratTime));

输出结果: 总耗时:12840246

 由以上对比可知,优化后性能提升了一倍,嵌套循环应该遵循“外小内大”的原则,这就好比你复制很多个小文件和复制几个大文件的区别。
          
     l循环list,想必用的最多,但是可能因为习惯性的i<list.size(),导致性能下降了一半...
      例如: 
       

List<?> list = xxx.findByxxx(); 

for (int i = 0; i <
list.size(); i++) {  

    //处理业务逻辑...... 

}

for每执行一次,list.size()都会执行一次,这无疑会大大降低系统性能...如果改成:

 int listSize = list.size();

for(int i = 0 ; i<listSize;i++){

 //业务逻辑...



性能提升至少三分之一...

     异常处理...
    for内部捕获...

long stratTime = System.nanoTime();  

for (int i = 0; i < 10000000; i++) {  

    try {  

    } catch (Exception e) {  

    }  

}  

long endTime = System.nanoTime();  

System.out.println("在内部捕获异常耗时:"+(endTime - stratTime)); 

    for外部捕获...

long stratTime = System.nanoTime();  

try {  

    for (int i = 0; i < 10000000; i++) {  

    }  

} catch (Exception e) {  

  

}  

long endTime = System.nanoTime();  

System.out.println("在外部捕获异常耗时:"+(endTime - stratTime));  

在内部捕获异常耗时:12150142  

在外部捕获异常耗时:1955

捕获异常是很耗资源的,所以不要把try catch放到循环内部,优化后性能,响应速度提升数倍...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: