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

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

  

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

   

  1. long stratTime = System.nanoTime();  
  2. for (int i = 0; i < 10000000; i++) {  
  3.     for (int j = 0; j < 10; j++) {  
  4.          system.out.println("那你很棒棒哦!!!") 
  5.     }  
  6. }  
  7. long endTime = System.nanoTime();  
  8. System.out.println("总耗时:"+ (endTime - stratTime)); 
  9. 输出结果:  总耗时:4573255
  10.  
  11. 改成 :  
  12.      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));
  13. 输出结果: 总耗时:12840246
  14.  由以上对比可知,优化后性能提升了一倍,嵌套循环应该遵循“外小内大”的原则,这就好比你复制很多个小文件和复制几个大文件的区别。
          
     l循环list,想必用的最多,但是可能因为习惯性的i<list.size(),导致性能下降了一半...
      例如: 
       
  1. List<?> list = xxx.findByxxx(); 
  2. for (int i = 0; i < list.size(); i++) {  
  3.     //处理业务逻辑...... 
  4. }
  5. for每执行一次,list.size()都会执行一次,这无疑会大大降低系统性能...如果改成:
  6.  int listSize = list.size();
  7. for(int i = 0 ; i<listSize;i++){
  8.  //业务逻辑...
  9. 性能提升至少三分之一...

     异常处理...
    for内部捕获...
  1. long stratTime = System.nanoTime();  
  2. for (int i = 0; i < 10000000; i++) {  
  3.     try {  
  4.     } catch (Exception e) {  
  5.     }  
  6. }  
  7. long endTime = System.nanoTime();  
  8. System.out.println("在内部捕获异常耗时:"+(endTime - stratTime)); 

    for外部捕获...
  1. long stratTime = System.nanoTime();  
  2. try {  
  3.     for (int i = 0; i < 10000000; i++) {  
  4.     }  
  5. } catch (Exception e) {  
  6.   
  7. }  
  8. long endTime = System.nanoTime();  
  9. System.out.println("在外部捕获异常耗时:"+(endTime - stratTime));  

  10. 在内部捕获异常耗时:12150142  
  11. 在外部捕获异常耗时:1955
  12. 捕获异常是很耗资源的,所以不要把try catch放到循环内部,优化后性能,响应速度提升数倍...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值