【发布时间】:2016-05-25 11:01:06
【问题描述】:
我有一个 ArrayList 围绕 3483 对象准备合并到数据库中。
当我使用 lambda 表达式时 - 它需要 85122 毫秒。
但是for(Obj o : list) 只需要 25 毫秒。为什么 Java8 需要多 3404 倍的时间?
List<CIBSubjectData> list1 = .....
list1.forEach(data ->
merge(data)
);
for (CIBSubjectData data : list1) {
merge(data);
}
【问题讨论】:
-
试过并行流:list1.parallelStream().forEach(data -> merge(data)) ?
-
你可能会在this question找到答案。
-
我认为我们需要更多的上下文和/或代码。
forEach+lambda 确实需要更长的时间,但在一般情况下,远不及 那个 更长的时间。我刚刚对有 400k 个条目的LinkedList进行了一次简单的检查(即not reliable),forEach花了 40 毫秒;增强for看 5ms。 -
你在
merge(data)里面做什么?
标签: java