Являются ли следующие два кодовых блока эквивалентными по показателям?Оптимизация «множественной карты»() 'скальдинга
val input: TypedPipe[Person] = ....
input
.map(_.getName)
.map(_.split(" "))
и ...
val input: TypedPipe[Person] = ....
input
.map(_.getName.split(" "))
В частности, это Ошпаривание собирается оптимизировать код и выполнить одну карту только работу для обоих фрагментах выше во все времена? Что делать, если функции карты более сложны, чем getName/split?
IMO (и для более сложных функций карты) первый пример более читабельен. Однако я обеспокоен тем, что это может привести к менее эффективному исполнению.
Кстати, я предполагаю, что если между функциями map() одна за другой (и без каких-либо других функций между ними), то они будут свернуты в один из них компилятором/оптимизатором и одним будет выполняться только работа с картой. Мне просто нужно доказательство этого! – Gevorg