【发布时间】:2020-08-20 11:36:24
【问题描述】:
考虑以下 2 个示例。
1 使用流
myList.stream().map(this::getInt).max(Integer::compareTo);
2 老办法
int max = Integer.MIN_VALUE;
for (MyItem item : myList) {
max = Math.max(max, getInt(item));
}
以上getInt 方法接受MyItem 参数并返回int 结果。
在这里,与 #1 相比,#2 的延迟要低得多。有谁知道我为什么或有什么问题?
【问题讨论】:
-
声称的性能差异没有记录测量方法是毫无价值的。见How do I write a correct micro-benchmark in Java?,我敢打赌,你违反了一两条规则。一个有用的指针可能是Java lambdas 20 times slower than anonymous classes Q&A。
-
@Holger 你是在建议我用方法输入值吗?
-
不,我建议记录您如何得出第二个代码比第一个代码“延迟低得多”的结论。如果我们使用测量代码而不是感觉,请发布该代码。然后,我们可以告诉你你做错了什么。或者您可以按照已经发布的链接找到自己。
标签: java java-8 java-stream max min