使用嵌套的 Intstream 循环时,Java 8 性能非常糟糕
在阅读了Java 8的java.util.stream.Intstream之后,我一直在用流替换一些传统的循环。不幸的是,我在处理嵌套循环时遇到了一些性能问题。
不出所料,以下代码在我的计算机中大约在 47 毫秒内运行:
IntStream.range(0, 1000000000).forEach(i -> {});
但是,嵌套另一个 IntStream 超处理器会将执行时间膨胀到大约 10,458 毫秒 - 即:
IntStream.range(0, 1000000000).forEach(i -> {
IntStream.range(0, 1).forEach(j -> {});
});
这是我的误用情况,还是将来可能解决的问题?
编辑:为了进行比较,以下代码使用传统的内部循环运行得更快(在1,801毫秒内)。因此,即使考虑到优化,使用内部IntStream似乎也会产生更多的开销?
final long[] random = {1};
IntStream.range(0, 1000000000).forEach(i -> {
for (int j = 0; j < 1; j++) {
random[0] += i;
}
});