java8 for ,forEach ,lambda forEach , strean forEach , parller stream forEach, Iterator性能对比
java8 for ,forEach ,Iterator,lambda forEach ,lambda strean forEach , lambda parller stream forEach性能对比
性能结果如下:
lambda parallelStream().forEach() > lambda stream().forEach() ≈ lambda forEach() > classical iterator ≈ classical forEach > classical for
测试代码如下:
public class ForTest {
public static void main(String[] args) {
for( int t=1;t<5;t++){
for(int tt=1;tt<=4;tt++){
List<Integer> testList = Arrays.asList(new Integer[(int) Math.pow(100,(t))]);
long t1 = System.currentTimeMillis();
for(int i=0;i<testList.size();i++){
Integer b = testList.get(i);
}
long t2 = System.currentTimeMillis();
for(Integer i:testList){
Integer b = i;
}
long t3 = System.currentTimeMillis();
testList.forEach(integer -> {Integer b = integer;});
long t4 = System.currentTimeMillis();
testList.stream().forEach(integer -> {Integer b = integer;});
long t5 = System.currentTimeMillis();
testList.parallelStream().forEach(integer -> {Integer b = integer;});
long t6 = System.currentTimeMillis();
Integer b;
for(Iterator<Integer> iterator = testList.iterator(); iterator.hasNext(); b = iterator.next());
long t7 = System.currentTimeMillis();
System.out.println("x" + tt +": loop size:" + testList.size());
System.out.println("y" + t + ": classical for loop waste millisecond:"+(t2-t1));
System.out.println("y" + t + ": classical forEach loop waste millisecond:"+(t3-t2));
System.out.println("y" + t + ": lambda forEach loop waste millisecond:"+(t4-t3));
System.out.println("y" + t + ": lambda not parallel stream forEach loop waste millisecond:"+(t5-t4));
System.out.println("y" + t + ": lambda parallel stream forEach loop waste millisecond:"+(t6-t5));
System.out.println("y" + t + ": classical iterator loop waste millisecond:"+(t7-t6)+"\n");
}
}
}
}
测试结果:
x1: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0
y1: lambda forEach loop waste millisecond:74
y1: lambda not parallel stream forEach loop waste millisecond:2
y1: lambda parallel stream forEach loop waste millisecond:7
y1: classical iterator loop waste millisecond:0 x2: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0
y1: lambda forEach loop waste millisecond:1
y1: lambda not parallel stream forEach loop waste millisecond:0
y1: lambda parallel stream forEach loop waste millisecond:0
y1: classical iterator loop waste millisecond:0 x3: loop size:100
y1: classical for loop waste millisecond:1
y1: classical forEach loop waste millisecond:0
y1: lambda forEach loop waste millisecond:0
y1: lambda not parallel stream forEach loop waste millisecond:1
y1: lambda parallel stream forEach loop waste millisecond:0
y1: classical iterator loop waste millisecond:0 x4: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0
y1: lambda forEach loop waste millisecond:0
y1: lambda not parallel stream forEach loop waste millisecond:0
y1: lambda parallel stream forEach loop waste millisecond:0
y1: classical iterator loop waste millisecond:0 x1: loop size:10000
y2: classical for loop waste millisecond:1
y2: classical forEach loop waste millisecond:0
y2: lambda forEach loop waste millisecond:1
y2: lambda not parallel stream forEach loop waste millisecond:0
y2: lambda parallel stream forEach loop waste millisecond:1
y2: classical iterator loop waste millisecond:1 x2: loop size:10000
y2: classical for loop waste millisecond:1
y2: classical forEach loop waste millisecond:1
y2: lambda forEach loop waste millisecond:0
y2: lambda not parallel stream forEach loop waste millisecond:0
y2: lambda parallel stream forEach loop waste millisecond:1
y2: classical iterator loop waste millisecond:1 x3: loop size:10000
y2: classical for loop waste millisecond:0
y2: classical forEach loop waste millisecond:1
y2: lambda forEach loop waste millisecond:0
y2: lambda not parallel stream forEach loop waste millisecond:0
y2: lambda parallel stream forEach loop waste millisecond:1
y2: classical iterator loop waste millisecond:0 x4: loop size:10000
y2: classical for loop waste millisecond:1
y2: classical forEach loop waste millisecond:0
y2: lambda forEach loop waste millisecond:0
y2: lambda not parallel stream forEach loop waste millisecond:0
y2: lambda parallel stream forEach loop waste millisecond:1
y2: classical iterator loop waste millisecond:0 x1: loop size:1000000
y3: classical for loop waste millisecond:14
y3: classical forEach loop waste millisecond:9
y3: lambda forEach loop waste millisecond:6
y3: lambda not parallel stream forEach loop waste millisecond:8
y3: lambda parallel stream forEach loop waste millisecond:3
y3: classical iterator loop waste millisecond:7 x2: loop size:1000000
y3: classical for loop waste millisecond:17
y3: classical forEach loop waste millisecond:12
y3: lambda forEach loop waste millisecond:7
y3: lambda not parallel stream forEach loop waste millisecond:0
y3: lambda parallel stream forEach loop waste millisecond:1
y3: classical iterator loop waste millisecond:18 x3: loop size:1000000
y3: classical for loop waste millisecond:14
y3: classical forEach loop waste millisecond:19
y3: lambda forEach loop waste millisecond:0
y3: lambda not parallel stream forEach loop waste millisecond:1
y3: lambda parallel stream forEach loop waste millisecond:0
y3: classical iterator loop waste millisecond:17 x4: loop size:1000000
y3: classical for loop waste millisecond:13
y3: classical forEach loop waste millisecond:25
y3: lambda forEach loop waste millisecond:1
y3: lambda not parallel stream forEach loop waste millisecond:0
y3: lambda parallel stream forEach loop waste millisecond:1
y3: classical iterator loop waste millisecond:31 x1: loop size:100000000
y4: classical for loop waste millisecond:237
y4: classical forEach loop waste millisecond:107
y4: lambda forEach loop waste millisecond:73
y4: lambda not parallel stream forEach loop waste millisecond:70
y4: lambda parallel stream forEach loop waste millisecond:28
y4: classical iterator loop waste millisecond:98 x2: loop size:100000000
y4: classical for loop waste millisecond:158
y4: classical forEach loop waste millisecond:92
y4: lambda forEach loop waste millisecond:59
y4: lambda not parallel stream forEach loop waste millisecond:54
y4: lambda parallel stream forEach loop waste millisecond:26
y4: classical iterator loop waste millisecond:66 x3: loop size:100000000
y4: classical for loop waste millisecond:123
y4: classical forEach loop waste millisecond:67
y4: lambda forEach loop waste millisecond:54
y4: lambda not parallel stream forEach loop waste millisecond:52
y4: lambda parallel stream forEach loop waste millisecond:21
y4: classical iterator loop waste millisecond:70 x4: loop size:100000000
y4: classical for loop waste millisecond:201
y4: classical forEach loop waste millisecond:92
y4: lambda forEach loop waste millisecond:54
y4: lambda not parallel stream forEach loop waste millisecond:53
y4: lambda parallel stream forEach loop waste millisecond:23
y4: classical iterator loop waste millisecond:67
java8 for ,forEach ,lambda forEach , strean forEach , parller stream forEach, Iterator性能对比的更多相关文章
- Java8特性之Lambda、方法引用以及Stream流
Java 8 中的 Streams API 详解:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/ Java笔记——Jav ...
- Java8新特性之forEach+Lambda 表达式遍历Map和List
这是Java8系列的第二篇,今天来说一下Java8中forEach的简单使用.我们使用对比的方式来看应该会看得更加清楚,更能理解: 一.遍历Map ============Java8之前的方式==== ...
- java8:(Lambda 表达式,Supplier,@FunctionalInterface,foreach(),Optional,Stream().collect,双冒号,joining,partitioningBy分区,collectingAndThen,filter())
1.Lambda 表达式: 引导:http://www.cnblogs.com/yulinfeng/p/8452379.html DEMO1: List<String> names1 = ...
- Java8 关于stream.foreach()和stream.peek()的区别解析
该思考来源于日常工作中,特记此心得. 思考:如何快速将list中的每个item内部属性值改变并进行其他流体操作呢? 下面做个测试:如何先在list中统一改变某属性的值,然后再根据某个属性取出该属性值最 ...
- 面试:Stream#foreach方法摸底三问,你都了解吗
JAVA8 新增了 Stream API,而在 Stream API 中又为程序员提供了一个遍历集合的 foreach 方法:java.util.stream.Stream#forEach. 那你对这 ...
- The 'stream().forEach()' chain can be replaced with 'forEach()' (may change semantics)
对集合操作时,因不同的写法Idea经常会提示:The 'stream().forEach()' chain can be replaced with 'forEach()' (may change s ...
- Java笔记——Java8特性之Lambda、方法引用和Streams
Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...
- Java8学习笔记----Lambda表达式 (转)
Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家 本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...
- Java8一:Lambda表达式教程
1. 什么是λ表达式 λ表达式本质上是一个匿名方法.让我们来看下面这个例子: public int add(int x, int y) { return x + y; } 转成 ...
随机推荐
- python中logging模块的用法
很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,loggin ...
- .NET 使用 Azure Blob 存储图片或文件
使用的是VS2017 一.先使用 NuGet 获取这两个包. 执行以下步骤: 在“解决方案资源管理器”中,右键单击你的项目并选择“管理 NuGet 包”. 1.在线搜索“WindowsAzure.St ...
- Python学习:列表、元组、字典、集合
转载:https://www.cnblogs.com/xc-718/p/9632942.html 列表/元组 列表和元组都是序列结构,它们本身很相似,但又有一点不同: 列表是用方括号标记,如:a=[1 ...
- java随机分配端口占用其它服务端口问题完美解决
问题描述: java创建socket连接,创建的随机客户端端口占用了其它服务的端口,导致该服务无法启动 解决: 1.linux系统为java或其它程序提供随机端口配置项 查看端口范围:sysctl ...
- 谈谈我对 js原型链的理解
想要学习 “原型链” 必须要认识什么是 “原型” 和 “原型链” 先理解一下普通的继承和原型的区别,下面写一段js代码来帮助理解: var Animal = function(){ // 动物抽象类 ...
- 使用Visual Studio Code开发(编译、调试)C++程序
总体安装步骤 安装VSC(Visual Studio Code). 安装C/C++编译器(如MinGW-w64),然后配置好环境变量.//完成这步即可在VSC的终端(命令行)下编译.运行.cpp程序了 ...
- [蓝桥杯]PREV-26.历届试题_最大子阵
问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大. 其中,A的子矩阵指在A中行和列均连续的一块. 输入格式 输入的第一行包含两个整数n, m,分别表示矩阵A的行数和 ...
- 转HDMI
HDMI协议解析 2017年06月18日 14:19:27 阅读数:2987 转载请标明出处floater的csdn blog,http://blog.csdn.net/flaoter 本文从软件工程 ...
- CBSN NEWS
https://www.cbsnews.com/video/fatal-crossing/
- js判断是否安装某个android app,没有安装下载该应用(websocket通信,监听窗口失去焦点事件)
现在经常有写场景需要提示用户下载app, 但是如果用户已经安装,我们希望是直接打开app. 实际上,js是没有判断app是否已经安装的方法的,我们只能曲线救国. 首先,我们需要有call起app的sc ...