今天就来说一下Java代码优化的事情,今天主要聊一下对于for(while等同理)循环的优化。

作为三大结构之一的循环,在我们编写代码的时候会经常用到。循环结构让我们操作数组、集合和其他一些有规律的事物变得更加的方便,但是如果我们在实际开发当中运用不合理,可能会给程序的性能带来很大的影响。所以我们还是需要掌握一些技巧来优化我们的代码的。

嵌套循环

stratTime = System.nanoTime();

for (int i = 0; i

for (int j = 0; j

}

}

endTime = System.nanoTime();

System.out.println("外大内小耗时:"+ (endTime - stratTime));

应改为:

stratTime = System.nanoTime();

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

for (int j = 0; j

}

}

endTime = System.nanoTime();

System.out.println("外小内大耗时:"+(endTime - stratTime));

两者耗时对比:

外大内小耗时:200192114

外小内大耗时:97995997

由以上对比可知,优化后性能提升了一倍,嵌套循环应该遵循“外小内大”的原则,这就好比你复制很多个小文件和复制几个大文件的区别。

提取与循环无关的表达式

stratTime = System.nanoTime();

for (int i = 0; i

i=i*a*b;

}

endTime = System.nanoTime();

System.out.println("未提取耗时:"+(endTime - stratTime));

应改为:

stratTime = System.nanoTime();

c = a*b;

for (int i = 0; i

i=i*c;

}

endTime = System.nanoTime();

System.out.println("已提取耗时:"+(endTime - stratTime));

两者耗时对比:

未提取耗时:45973050

已提取耗时:1955

代码中a+b与我们的循环无关,所以应该把它放到外面,避免重复计算,可以看出,优化后性能提升了好几个数量级,这些是不容忽视的。

消除循环终止判断时的方法调用

stratTime = System.nanoTime();

for (int i = 0; i

}

endTime = System.nanoTime();

System.out.println("未优化list耗时:"+(endTime - stratTime));

应改为:

stratTime = System.nanoTime();

int size = list.size();

for (int i = 0; i

}

endTime = System.nanoTime();

System.out.println("优化list耗时:"+(endTime - stratTime));

两者耗时对比:

未优化list耗时:27375

优化list耗时:2444

list.size()每次循环都会被执行一次,这无疑会影响程序的性能,所以应该将其放到循环外面,用一个变量来代替,优化前后的对比也很明显。

异常捕获

stratTime = System.nanoTime();

for (int i = 0; i

try {

} catch (Exception e) {

}

}

endTime = System.nanoTime();

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

应改为:

stratTime = System.nanoTime();

try {

for (int i = 0; i

}

} catch (Exception e) {

}

endTime = System.nanoTime();

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

两者耗时对比:

在内部捕获异常耗时:12150142

在外部捕获异常耗时:1955

大家都知道,捕获异常是很耗资源的,所以不要讲try catch放到循环内部,优化后同样有好几个数量级的提升。

性能优化的内容有很多,代码优化只是其中一小部分,我们在日常开发中应养成良好的编码习惯。接下来会跟大家探讨更多关于性能优化的内容,希望大家积极交流指导。

java for循环太多_java性能优化之for循环相关推荐

  1. java性能优化方案_Java性能优化要点

    Java性能优化要点 本文介绍如何通过以下几点从Java中挤压出性能,该大部分经验来自于Netty作者. JITJava即时编译器 当Java执行runtime环境时,每遇到一个新的类,JIT编译器在 ...

  2. java性能瓶颈分析_Java性能优化技巧整理,做一个深度的程序员

    原标题:Java性能优化技巧整理,做一个深度的程序员 在我们身边是一大批的程序员,层次不一,但是放眼观,我们很容易就可以看到那些是业务型程序员,那些是有层次的程序员.注重细节,注重性能,做一个有深度的 ...

  3. java split()方法_Java 性能优化的 50 个细节(珍藏版)

    作 者:Java杂记 来 源:yq.aliyun.com/articles/662001 在Java程序中,性能问题的大部分原因并不在于Java语言,而是程序本身.养成良好的编码习惯非常重要,能够显著 ...

  4. 菜鸟要做架构师(二)——java性能优化之for循环

    完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的.今天就来说一下java代码优化的事情,今天主要聊一下对于for(wh ...

  5. java数组有跨类建立对象_Java性能优化的45个细节(珍藏版)

    点击上面 蓝色字体关注我们技术 / 架构 / 职场 / 面试 关注即送:4000G  架构师视频 来源:http://t.cn/EiP42VF 在JAVA程序中,性能问题的大部分原因并不在于JAVA语 ...

  6. vector java 复制_Java性能优化必知的40个细节(珍藏版):Jvm调优+MySQL+Tomcat

    在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身.养成良好的编码习惯非常重要,能够显著地提升程序性能.文末有整理好的相关面试文件,可以免费获取. 性能优化的50个细节 1. 尽 ...

  7. java怎样将乘法优化成位移乘法_Java性能优化:程序优化

    现在计算机的处理性能越来越好,加上JDK升级对一些代码的优化,在代码层针对一些细节进行调整可能看不到性能的明显提升, 但是我觉得在开发中注意这些,更多的是可以保持一种性能优先的意识,对一些敲代码时间比 ...

  8. java性能优化权威指南_Java性能优化权威指南 PDF扫描[132MB]

    Java性能优化权威指南主要为Java SE 和Java EE 应用的性能调优提供建议.主要包括以下几方面:性能监控.性能分析.Java HotSpot VM 调优.高效的基准测试以及Java EE ...

  9. 唯品会JAVA怎么样_Java性能优化指南及唯品会的实战

    来自:高可用架构(微信号:ArchNotes) 作者:肖桦,人称"江南白衣",目前任唯品会资深架构师.导读:本文分享了唯品会内部围绕 Java 性能优化大量的实践经验,同时介绍了唯 ...

  10. JAVA之JVM GC 机制与性能优化

    1 背景介绍 与C/C++相比,JAVA并不要求我们去人为编写代码进行内存回收和垃圾清理.JAVA提供了垃圾回收器(garbage collector)来自动检测对象的作用域),可自动把不再被使用的存 ...

最新文章

  1. Ubuntu恢复默认的字体
  2. 波士顿动力机器狗测评来了!售价堪比豪车,避障、导航、舞蹈样样都行,买不起还能租...
  3. 用shell脚本守护后台进程
  4. 【solr专题之四】关于VelocityResponseWriter
  5. Spring Boot基础学习笔记01:Spring Boot入门程序
  6. python遍历字典与for循环运用方法
  7. 因云而生,阿里云全面进入云原生时代
  8. 一键搞定JavaEE应用 JRE+Tomcat+Mysql-JaveEE绿色运行环境JTM0 9版
  9. acrobat PDF删除部分_迅捷PDF转换器3.2.0Mod会员版
  10. python读取文件时的相对路径
  11. 使用 ONLYOFFICE 宏监测空气质量数据
  12. access_token VS refresh_token
  13. JZOJ 4250. 【五校联考7day1附加题】路径(折半搜索)
  14. Pdf.js 解决电子印章问题(最新)
  15. 校园跑腿小程序市场需要和功能分析!
  16. 计算机教师专业环境,信息技术环境对教师专业发展的新要求
  17. 基层管理者的第一步——从“我”变成“我们”
  18. 干货 | 带你解锁AC/DC、DC/DC转换器基础
  19. 服务器终端授权,终端服务器许可 - Windows Server | Microsoft Docs
  20. matlab 稳定系统,MATLAB分析在系统稳定性的应用

热门文章

  1. 还在一节一节数链条吗?使用SOLIDWORKS参数化设计自动计算链条节数
  2. 在管家婆软件中项目管理教程
  3. 打开MSDTC的方法(图解)
  4. 服务器msdtc没有安全显示项,MSDTC 疑难解答
  5. Android手机号码归属地查询
  6. 封装Win 10系统时封装工具报错,无法正常封装,封装失败
  7. Lights off(关灯游戏)终极算法
  8. win10窗口设置眼睛保护色
  9. hsqldb mysql_安装HSQLDB
  10. java 画正弦函数曲线_JAVA画正弦曲线