使用Java 8 Stream API时,将多个地图调用合并为一个有什么好处,还是不会真正影响性能?
例如:
stream.map(SomeClass::operation1).map(SomeClass::operation2);
与
stream.map(o -> o.operation1().operation2());
答案 0 :(得分:2)
对于大多数业务逻辑操作,此处的性能开销可以忽略不计。在管道中有两个额外的方法调用(实际应用程序中可能没有JIT编译器内联)。你也有更长的调用堆栈(一帧),所以如果你在流操作中有一个异常,它的创建会慢一点。如果您的流执行真正的低级操作(如简单数学),这些事情可能会很重要。然而,大多数实际问题具有更大的计算成本,因此相对性能下降不太可能引人注意。如果您实际执行简单的数学运算并且需要性能,那么最好坚持使用普通的旧for
循环。使用您认为更具可读性且不执行过早优化的版本。