Java 8 Stream string of map calls versus combining into one [duplicate]

When using Java 8 Stream API, is there a benefit to combining multiple map calls into one, or does it not really affect performance?

For example:

stream.map(SomeClass::operation1).map(SomeClass::operation2);

versus

stream.map(o -> o.operation1().operation2());
10

1 Answer

The performance overhead here is negligible for most business-logic operations. You have two additional method calls in the pipeline (which may not be inlined by JIT-compiler in real application). Also you have longer call stack (by one frame), so if you have an exception inside stream operation, its creation would be a little bit slower. These things might be significant if your stream performs really low-level operations like simple math. However most of the real problems have much bigger computational cost, so relative performance drop is unlikely to be noticeable. And if you actually perform a simple math and need the performance, it's better to stick with plain old for loops instead. Use the version you find more readable and do not perform the premature optimization.

You Might Also Like