Java foreach与for循环性能对比
2019独角兽企业重金招聘Python工程师标准>>>
测试用例
List<String> list = new ArrayList<>();for (int i = 0; i < 10000000; i++) {list.add("value-" + i);
}Long startTime = System.currentTimeMillis();
for (String value : list) {if ("222".equals("222")) {if ("222".equals("222")) {if ("555".equals("555")) {if ("222".equals("222")) {value.concat("value");}}}}
}
Long endTime = System.currentTimeMillis();
System.out.println(endTime - startTime);Long startTime2 = System.currentTimeMillis();
for (int i = 0; i < list.size(); i++) {if ("222".equals("222")) {if ("222".equals("222")) {if ("222".equals("222")) {if ("222".equals("222")) {if ("222".equals("222")) {if ("222".equals("222")) {String value = list.get(i);value.concat("value" + i);}}}}}}
}
Long endTime2 = System.currentTimeMillis();
System.out.println(endTime2 - startTime2);Long startTime3 = System.currentTimeMillis();
for (int i = 0, length = list.size(); i < length; i++) {if ("888".equals("888")) {if ("888".equals("888")) {if ("888".equals("888")) {if ("888".equals("888")) {if ("888".equals("888")) {if ("888".equals("888")) {String value = list.get(i);value.concat("value" + i);}}}}}}
}
Long endTime3 = System.currentTimeMillis();
System.out.println(endTime3 - startTime3);
执行结果
2455
516
533Process finished with exit code 0
总结
明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。
- 尽量减少对变量的重复计算
- 对性能有要求时,建议使用 for 循环。
谢谢各位看官评论。
转载于:https://my.oschina.net/u/1033181/blog/1796371
Java foreach与for循环性能对比相关推荐
- Java forEach中 Lambda Expr中的 final变量要求
https://my.oschina.net/wadelau/blog/1859419 Java forEach中 Lambda Expr中的 final变量要求 Java8闭包 闭包是一个函数在创建 ...
- java foreach 循环原理
2019独角兽企业重金招聘Python工程师标准>>> java foreach 语法是在jdk1.5时加入的新特性,主要是当作for语法的一个增强,那么它的底层到底是怎么实现的呢? ...
- java forEach使用
java forEach使用 foreach 是 Java 中的一种语法糖,目的是方便程序员开发和提高性能.其实就是编译期间以特定的字节码或特定的方式来对这些语法进行处理. 1.普通数组forEach ...
- C++函数与java函数菜鸟级的对比理解
C++函数与java函数菜鸟级的对比理解 转自:http://blog.csdn.net/stevenhu_223/article/details/9108571 Android源码底层的代码实现文件 ...
- php java优劣_PHP开发和JAVA开发网站的优劣对比
PHP开发和JAVA开发网站的优劣对比有哪些?该篇文章由川软教育君整理并编辑: 1.开发网站最好选用一个比较成熟.资料比较多的CMS,因为自己开发后台工作量也不小,JAVA的CMS比PHP要少很多,所 ...
- java foreach unsupport major minor version 52.0
1.java foreach 格式 for(type var :arr) 2.unsupport major minor version 52.0 右击选择properties-->Java ...
- Java foreach 遍历List的简单使用
Java foreach 遍历List的简单使用 首先在数据库中查询出来的结果存在List<实体类>里. 使用方法概述: for(数据类型:数据源){要在循环里执行的代码; } List& ...
- Java锁的升级与对比
Java锁的升级与对比 在Java SE 1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态.偏向锁状态.轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级. 注: 锁可以升级但不能降 ...
- java foreach 删除_为什么java不要在foreach循环里进行元素的remove/add操作
首先,这涉及多线程操作,Iterator是不支持多线程操作的,List类会在内部维护一个modCount的变量,用来记录修改次数 举例:ArrayList源码 protected transient ...
最新文章
- CentOS系统设置开机自启动
- 为什么 Kafka 如此之快?
- OpenGL Julia Fractal(Julia分形)的实例
- jquery实战--定宽
- Python-100 练习题 02
- java html 转图片_Java 将Excel转为图片、html、XPS、XML、CSV
- python 两个df求相同的行_python – Pandas df操作:如果其他列行重复,则返回值列表的新列...
- cvc-complex-type.2.3: Element 'beans' cannot have character [children]
- Mac OS 下安装wget
- 闭合导线平差计算(表面)
- 卡西欧计算机十进制换二进制,卡西欧计算机怎么把十进制转换二进制
- 安装软件提示需要重启电脑的处理方法
- 使用OpenCV中的imread()内存报错问题
- 你好,布灵!高瓴人工智能学院首个AI小精灵诞生
- 用c语言如何以图形方式显示家谱,数据结构_家谱管理系统
- 1.3-聊天机器人的模块和框架
- html5 无插件视频播放器,多功能流媒体播放器网页无插件直播EasyPlayer.js如何实现播放完自动循环播放...
- Expat XML parser
- 神经网络的图像识别技术,神经网络图像角度分析
- 独立之精神,自由之思想
热门文章
- k-means算法的理解与实现
- 注释转换——(小项目)
- 用gcc编译实现对Linux系统cpu占用
- Spring整合Struts的几种最常见方式
- F2etest+UIRecorder(环境搭建)【1】
- Kail Linux渗透测试教程之网络扫描和嗅探工具Nmap
- 河北师范大学C语言试题,2017年河北师范大学信息技术学院838C语言程序设计考研题库...
- oracle 函数参数类型,ORACLE 11g中的表值函数? (参数化视图)
- python a any_Python any() 函数
- php网站开发案例教程ppt,php网站开发案例教程》课件.ppt