Mik*_*ike 9 java java-8 java-stream
使用Java 8 Stream API时,将多个地图调用合并为一个有什么好处,还是不会真正影响性能?
例如:
stream.map(SomeClass::operation1).map(SomeClass::operation2);
Run Code Online (Sandbox Code Playgroud)
与
stream.map(o -> o.operation1().operation2());
Run Code Online (Sandbox Code Playgroud)
对于大多数业务逻辑操作来说,这里的性能开销可以忽略不计。管道中有两个额外的方法调用(在实际应用程序中 JIT 编译器可能不会内联)。此外,您的调用堆栈较长(一帧),因此如果流操作内出现异常,其创建速度会稍慢一些。如果您的流执行非常低级的操作(例如简单的数学),那么这些事情可能很重要。然而,大多数实际问题的计算成本要大得多,因此相对性能下降不太可能明显。如果您实际上执行了简单的数学运算并且需要性能,那么最好坚持使用普通的旧for循环。使用您认为更具可读性的版本,并且不要执行过早的优化。