java各种List循环:for、forEach、lambda forEach、stream forEach、iterator性能效率对比

横向纵向测试代码:

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");
    }
}

测试平台:MacBook 2016、六代i7、16GB DDR3 2133

运行结果:

x1: loop size:100
y1: classical for loop waste millisecond:0
y1: classical forEach loop waste millisecond:0
y1: lambda forEach loop waste millisecond:66
y1: lambda not parallel stream forEach loop waste millisecond:3
y1: lambda parallel stream forEach loop waste millisecond:5
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:0
y1: lambda not parallel stream forEach loop waste millisecond:0
y1: lambda parallel stream forEach loop waste millisecond:3
y1: classical iterator loop waste millisecond:0


x3: 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


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: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:1


x2: 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


x3: 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


x4: 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:0
y2: classical iterator loop waste millisecond:1


x1: loop size:1000000
y3: classical for loop waste millisecond:11
y3: classical forEach loop waste millisecond:6
y3: lambda forEach loop waste millisecond:4
y3: lambda not parallel stream forEach loop waste millisecond:1
y3: lambda parallel stream forEach loop waste millisecond:5
y3: classical iterator loop waste millisecond:16


x2: loop size:1000000
y3: classical for loop waste millisecond:18
y3: classical forEach loop waste millisecond:13
y3: lambda forEach loop waste millisecond:6
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:13


x3: loop size:1000000
y3: classical for loop waste millisecond:11
y3: classical forEach loop waste millisecond:15
y3: lambda forEach loop waste millisecond:1
y3: lambda not parallel stream forEach loop waste millisecond:1
y3: lambda parallel stream forEach loop waste millisecond:2
y3: classical iterator loop waste millisecond:14


x4: loop size:1000000
y3: classical for loop waste millisecond:10
y3: classical forEach loop waste millisecond:12
y3: lambda forEach loop waste millisecond:1
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:12


x1: loop size:100000000
y4: classical for loop waste millisecond:116
y4: classical forEach loop waste millisecond:104
y4: lambda forEach loop waste millisecond:69
y4: lambda not parallel stream forEach loop waste millisecond:90
y4: lambda parallel stream forEach loop waste millisecond:21
y4: classical iterator loop waste millisecond:106


x2: loop size:100000000
y4: classical for loop waste millisecond:122
y4: classical forEach loop waste millisecond:105
y4: lambda forEach loop waste millisecond:75
y4: lambda not parallel stream forEach loop waste millisecond:74
y4: lambda parallel stream forEach loop waste millisecond:19
y4: classical iterator loop waste millisecond:72


x3: loop size:100000000
y4: classical for loop waste millisecond:159
y4: classical forEach loop waste millisecond:82
y4: lambda forEach loop waste millisecond:60
y4: lambda not parallel stream forEach loop waste millisecond:59
y4: lambda parallel stream forEach loop waste millisecond:17
y4: classical iterator loop waste millisecond:76


x4: loop size:100000000
y4: classical for loop waste millisecond:132
y4: classical forEach loop waste millisecond:70
y4: lambda forEach loop waste millisecond:56
y4: lambda not parallel stream forEach loop waste millisecond:76
y4: lambda parallel stream forEach loop waste millisecond:17

y4: classical iterator loop waste millisecond:86

性能顺序:lambda parallelStream().forEach()>lambda stream().forEach()≈lambda forEach()>classical iterator≈classical forEach>classical for

注意:lambda parallelStream().forEach()会不保证顺序

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值