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性能对比的更多相关文章

  1. Java8特性之Lambda、方法引用以及Stream流

    Java 8 中的 Streams API 详解:https://www.ibm.com/developerworks/cn/java/j-lo-java8streamapi/ Java笔记——Jav ...

  2. Java8新特性之forEach+Lambda 表达式遍历Map和List

    这是Java8系列的第二篇,今天来说一下Java8中forEach的简单使用.我们使用对比的方式来看应该会看得更加清楚,更能理解: 一.遍历Map ============Java8之前的方式==== ...

  3. 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 = ...

  4. Java8 关于stream.foreach()和stream.peek()的区别解析

    该思考来源于日常工作中,特记此心得. 思考:如何快速将list中的每个item内部属性值改变并进行其他流体操作呢? 下面做个测试:如何先在list中统一改变某属性的值,然后再根据某个属性取出该属性值最 ...

  5. 面试:Stream#foreach方法摸底三问,你都了解吗

    JAVA8 新增了 Stream API,而在 Stream API 中又为程序员提供了一个遍历集合的 foreach 方法:java.util.stream.Stream#forEach. 那你对这 ...

  6. 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 ...

  7. Java笔记——Java8特性之Lambda、方法引用和Streams

    Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...

  8. Java8学习笔记----Lambda表达式 (转)

    Java8学习笔记----Lambda表达式 天锦 2014-03-24 16:43:30 发表于:ATA之家       本文主要记录自己学习Java8的历程,方便大家一起探讨和自己的备忘.因为本人 ...

  9. Java8一:Lambda表达式教程

    1. 什么是λ表达式 λ表达式本质上是一个匿名方法.让我们来看下面这个例子: public int add(int x, int y) {         return x + y;     } 转成 ...

随机推荐

  1. 【linux日常】 ACL权限管理

    ACL ((Access Control Lists) setfacl命令 这里引用一个非常详细的命令介绍. 要点: getfacl -R        递归获取acl权限,可以存储为文件以备还原 g ...

  2. flagr a/b 测试特性开关&&微服务动态配置工具

    flagr a/b 测试特性开关&&微服务动态配置工具 简单运行 docker docker run -it -p 18000:18000 checkr/flagr 运行界面 说明 参 ...

  3. Python 标准库笔记(1) — String模块

    原文出处: j_hao104 String模块包含大量实用常量和类,以及一些过时的遗留功能,并还可用作字符串操作. 1. 常用方法 常用方法 描述 str.capitalize() 把字符串的首字母大 ...

  4. python 数字以及字符串(方法总结,有的可能理解错误)

    数字类型(int): 在python 2中,数字类型可以分为整形,长整形,浮点型,以及复数.在python3中都是整形和长整形都称之为整形,且python3中没有限制. 1.int方法使用,用于转换字 ...

  5. python用字符串调用当前模块内的函数

    eval(字符串)() vars()[字符串]() 例如:

  6. python3学习笔记九(if语句)

    # !/usr/bin/python3 斐波那数列,两个元素的总和确定下一个数a,b = 0,1while b < 1000: print(b,end=',') a, b = b, a+bpri ...

  7. 尝试 Markdown 写测试用例

    我的原帖https://testerhome.com/topics/9412 大家都知道我们社区的帖子提倡用Markdown格式编写,正好项目进入稳定期,尝试用Markdown写下测试用例.有几个目的 ...

  8. 关于使用format()方法格式化字符串,读这一篇就够了!

    从Python 2.6开始,又出现了另外一种格式化字符串的方法——format()方法.format()方法是字符串众多方法中的一个,调用这个方法时要使用点操作符(.),该方法返回一个格式化好的字符串 ...

  9. Unity Shader Graph(三)Phase In and Out

    软件环境 Unity 2018.1.6f1 Lightweight Render Pipeline 1.1.11-preview Phase In and Out效果预览 角色沿Y轴逐渐出现和消失 S ...

  10. axure8.0激活

    Licensee:米 业成 (STUDENT)Key:nFmqBBvEqdvbiUjy8NZiyWiRSg3yO+PtZ8c9wdwxWse4WprphvSu9sohAdpNnJK5