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. 15. Password auditing (密码审核 12个)

    Aircrack是一套用于802.11a / b / g WEP和WPA破解的工具. 一旦收集到足够的加密数据包,它就会实现最有效的破解算法来恢复无线密钥.. 该套件包括十多个分离工具,包括airod ...

  2. 初始化HTML样式(转载)

    方式一 ;; } body { background:#fff; color:#555; font-size:14px; font-family: Verdana, Arial, Helvetica, ...

  3. JAVA结对编程--阶段总结

    一.需求分析 1.基本需求 随机生成n道题目 支持整数.分数,支持多运算符 能判断正误,错误时给出正确答案 能计算出正确率 2.扩展需求 处理生成题目并输出到文件 完成题目后从文件读入并判题 支持多语 ...

  4. ie 9.10 兼容性问题 遇到的坑

    1.ie9 中ajax 跨域调用时 error报错信息为”No Transport”   原因是 ajax跨域 本人用的是 cors解决方案 但是ie9一下版本 对cors默认是不允许的所以需要我们自 ...

  5. 使用composer遇到的坑

    平台:Windows下cmd命令行內 問題 [Composer\Downloader\TransportException] The "https://packagist.phpcompos ...

  6. VS调试快捷键配置更改

    VS进行调试时,默认情况下需按下Fn+F5等组合按键,手短的用起来很不便利 如何去掉组合键只按下F5? 解决:即按下Fn+Esc,然后就可以直接按下F1-F12使用VS的快捷键,如果想回到组合键也是同 ...

  7. 关于C6678的网口问题

    1.C6678 Keystone1架构的GbE switch subsystem如图所示: 2.从图中可以看到MAC层与物理层PHY芯片的连接接口是由SGMII+SerDES构成,SGMII是以太网M ...

  8. 深入理解C#的装箱和拆箱(转)

    装箱和拆箱是值类型和引用类型之间相互转换是要执行的操作.  1. 装箱在值类型向引用类型转换时发生 2. 拆箱在引用类型向值类型转换时发生 光上述两句话不难理解,但是往深处了解,就需要一些篇幅来解释了 ...

  9. 更新 TeX Live 软件包

    这个 TeX Live 软件,你得时常更新一下,不然会遇到一些由软件包自身 Bug 导致的编译问题.比如,这次我使用 Beamer 软件包写演示文稿,就遇到问题了,结果发现是软件包自身存在的问题.安装 ...

  10. CentOS7.4下部署hadoop3.1.1

    CentOS7.4下部署hadoop3.1.1 契机 由于工作原因要部署hadoop的集群,习惯使用最新的稳定版本2018年的时候由于时间紧破部署了2.7.2版本,最新由于又要部署有研究了一下3.x的 ...