为什么这个并行流运行15x SLOWER?

时间:2017-05-31 20:54:13

标签: java java-8 java-stream

我试图向Java新手流等进行演示。他说他已经读过,流可以比原始类型的循环慢。所以,我立刻设置证明错了!我得到的是一个震惊!

for循环和串行流的运行方式大致相同,但并行流的速度始终如一。有人可以解释原因吗?

   @Test
    public void foo() throws Exception {

        Random r = new Random();

        IntSummaryStatistics stats = new IntSummaryStatistics();

        long start = System.currentTimeMillis();
        for(int i = 0; i < 100000000;i++) {
            stats.accept(r.nextInt() * 2);
        }
        System.out.println(System.currentTimeMillis() - start);

        start = System.currentTimeMillis();
        stats = r.ints(100000000).map(rn -> rn * 2).summaryStatistics();
        System.out.println(System.currentTimeMillis() - start);

        start = System.currentTimeMillis();
        stats = r.ints(100000000).parallel().map(rn -> rn * 2).summaryStatistics();
        System.out.println(System.currentTimeMillis() - start);


    }

resutls:

1067
1047
15184

0 个答案:

没有答案