java 测试:iterator foreach for 三种迭代方式哪种更快?
代码:
public class main {
public static void main(String[] p_args){
ArrayList<String> _l_string = new ArrayList<>();
for (int o_a = 0; o_a < 100000; o_a++) {
_l_string.add(String.valueOf(o_a));
}
c_public_countTime _countTime = new c_public_countTime();
_countTime.f_begin();
for (int i = 0; i < _l_string.size(); i++) {
System.out.print(_l_string.get(i));
}
String _time_for = _countTime.f_done();
_countTime.f_begin();
for (String o_a :
_l_string) {
System.out.print(o_a);
}
String _time_foreach = _countTime.f_done();
_countTime.f_begin();
for (Iterator<String> o_iterator = _l_string.iterator(); o_iterator.hasNext();) {
System.out.print(o_iterator.next());
}
String _time_iterator = _countTime.f_done(); System.out.println("\niterator:" + _time_iterator + "\nfor:" + _time_for + "\nforeach:" + _time_foreach );
}
}
结果:可能是由于 java 内部执行的原因,不同的顺序造成的时长也各不相同,这里采集了一点数据样本。
(速度、先后顺序、时长)
#2 for:354 毫秒
#1 foreach:263 毫秒
#3 iterator:425 毫秒
小结:for 之后的 foreach 增加了速度。
=
#1 for:285 毫秒
#2 iterator:301 毫秒
#3 foreach:363 毫秒
小结:for 首次出场也获得了最快速度。
===
#3 foreach:517 毫秒
#1 for:285 毫秒
#2 iterator:478 毫秒
小结:foreach 首次出场速度不佳,for 速度跟首次出场速度一致。
=
#3 foreach:416 毫秒
#1 iterator:317 毫秒
#2 for:321 毫秒
小结:即使在 iterator 获得最快速度的时候,for 也有几乎没有差别的速度。
===
#2 iterator:396 毫秒
#3 foreach:415 毫秒
#1 for:253 毫秒
小结:for 在最后出场的时候获得了最快速度。
===
#3 iterator:417 毫秒
#1 for:332 毫秒
#2 foreach:334 毫秒
小结:for 获得了最佳速度。
总结:iterator 和 foreach 并不会提高迭代的速度。所以应该通过必要的理由来使用它们,否则还是默认 for 比较快。
java 测试:iterator foreach for 三种迭代方式哪种更快?的更多相关文章
- 细说java中Map的两种迭代方式
曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...
- 【页面传值6种方式】- 【JSP 页面传值方法总结:4种】 - 【跨页面传值的几种简单方式3种】
阅读目录 1. URL 链接后追加参数 2. Form 3. 设置 Cookie 4. 设置 Session JSP 页面间传递参数是项目中经常需要的,这应该算是 web 基本功吧. 试着将各种方式总 ...
- LVS原理详解(3种工作方式8种调度算法)--老男孩
一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...
- 【java】TreeMap/HashMap的循环迭代中 keySet和entrySet和forEach方式 + map的几种迭代方式
参考链接:https://www.cnblogs.com/crazyacking/p/5573528.html ================================== java紫色代表迭 ...
- LVS三种工作方式八种算法
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
- LVS原理详解及部署之二:LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一 台计算机.集群系统中的单个计 ...
- Java 测试并行编程(三)
有很多其他的交替运行 因为在并行代码中的错误一般是低概率事件.因此,试运行并发差错时需要反复多次,但是,有很多方法可以提高发现这些错误的概率 ,在前面提到的,在多处理器系统.假设 线程的数量,那么 与 ...
- 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...
- LVS原理详解(3种工作方式8种调度算法)
一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...
随机推荐
- Volley框架使用笔记
1.初始化请求队列 RequestQueue RequestQueue queue= Volley.newRequestQueue(context); 2.StringRequest 网络请求 Get ...
- Qt工程打包发布
Qt版本 5.7.1 1.添加环境变量 在..\Qt5.7.0\5.7\msvc2013_64\bin(..省略了盘符,例如我的是D:\Qt\Qt5.7.0\5.7\msvc2013_64\bin) ...
- angular开发单页面应用--页面资源部分
关于angular是什么,能够干什么就不在这里解释了,自行搜索了,或者等稍晚一点再解释... angular适合开发单页面应用,这句话在介绍angular的网站和博客里都可以提到.因为angular是 ...
- visual studio 2013 中配置OpenCV2.4.13 姿势
首先在path中添加 “C:\OpenCV\opencv\build\x64\vc12\bin” (地址随实际变化) 注:添加的都是*86不使用*64 在visualstudio 2013中配置 ...
- 修改Firebug字体
Firebug是一件非常好用的调试工具,然而默认的字体有些单调,设置里又没有更改的选项,那么字体到底能不能更改呢?这个问题困扰了我好久,直到今天我才偶然发现了解决方案. Firebug属于火狐的一个插 ...
- css3 自定义字体的使用方法
@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许 ...
- html5 拖拽函数1--不兼容火狐
拖拽元素事件<br/>ondragstart拖拽前触发<br/>ondrag拖拽结束之前连续触发<br/>ondragend 拖拽结束前触发<br/>目 ...
- R语言常用函数
统计: mean:平均数sd:Standard Deviation 标准差var:方差median:中位数cov:协方差cor:相关系数 #环境ls/objectsrmhelp() library() ...
- asp.net4.5尚未在web服务器上注册 解决方案
以前都是直接用aspnet_regiis.exe -i 现在用这个不好使了,解决办法打微软补丁. https://blogs.msdn.microsoft.com/webdev/2014/11/11/ ...
- varchar后面是否定义长度,还是有区别的
' ' PRINT @year 结果是:2 ) ,' ' PRINT @year 结果是:2015 varchar是否定义长度,还是有区别的,不定义长度的时候,并非我想象中按照实际赋值自动填充,似乎默 ...