小编Jos*_*ung的帖子

使用嵌套的Intstream循环时,Java 8的性能非常糟糕

在阅读了Java 8的java.util.stream.Intstream之后,我一直在用流替换一些传统的循环.不幸的是,在处理嵌套循环时遇到了一些性能问题.

正如预期的那样,以下代码在我的机器中运行大约47毫秒:

IntStream.range(0, 1000000000).forEach(i -> {});
Run Code Online (Sandbox Code Playgroud)

但是,嵌套另一个IntStream hyper会将执行时间膨胀到大约10,458 ms - 即:

IntStream.range(0, 1000000000).forEach(i -> {
    IntStream.range(0, 1).forEach(j -> {});
});
Run Code Online (Sandbox Code Playgroud)

这是我的滥用案例,还是这个问题将来可以解决?

编辑:为了进行比较,以下代码使用传统的内部循环运行得更快(在1,801毫秒内).因此,即使考虑到优化,使用内部IntStream似乎也会有更多的开销?

final long[] random = {1};
IntStream.range(0, 1000000000).forEach(i -> {
    for (int j = 0; j < 1; j++) {
        random[0] += i;
    }
});
Run Code Online (Sandbox Code Playgroud)

java performance java-8 java-stream

14
推荐指数
2
解决办法
1714
查看次数

标签 统计

java ×1

java-8 ×1

java-stream ×1

performance ×1