【发布时间】:2015-05-12 17:02:44
【问题描述】:
我有一个函数来为我的数据建模。 如果参数“Entity”包含 child,则它包含在子名称中。 有两种类型的孩子 Type-A 和 Type-B。 对于每种类型,函数都被递归调用。 当孩子没有更多的孩子名字时,这个递归函数调用退出。
public void modelMyData(Entity entity) {
if (entity.getChildNames()[0] != null) {
Arrays.stream(entity.getChildNames())
.collect(Collectors.toList())
.parallelStream()
.forEach(childType -> {
entity.getChild(childType).parallelStream()
.forEach(child -> {
modelMyData(child);
});
;
});
}
System.out.println("INSERT " + entity.getChildAttributeValue());
}
该程序对我来说很好。但是据说在java编程中使用并行流是不好的。
访问http://zeroturnaround.com/rebellabs/java-parallel-streams-are-bad-for-your-health/
我应该使用流而不是并行流吗?
【问题讨论】:
-
进行性能测试,看看 parallelStream 在你的机器上是否会表现得更好
-
我已经这样做了,并且流比并行流给了我更好的性能。这让我很困惑。
-
所以使用纯流。如果您在处理或/和长时间运行的计算期间执行某种类型的 IO,您希望在内核之间进行并行化,那么并行流将非常有用。
-
@AkhilKKamal 如果您有本地 I/O,您可能会导致过多的非顺序访问,从而降低 HDD 和 SSD 的性能。
标签: java