次の2つのコードブロックは、パフォーマンス面で同等ですか?複数のマップ()最適化のスケーリング
val input: TypedPipe[Person] = ....
input
.map(_.getName)
.map(_.split(" "))
と...
val input: TypedPipe[Person] = ....
input
.map(_.getName.split(" "))
具体的には、コードを最適化し、常にで上記のスニペットの両方のための単一のマップにのみジョブを実行しようとして火傷されますか?マップ関数がgetName/splitよりも複雑な場合はどうでしょうか?
IMO(およびはるかに複雑なマップ関数の場合)最初の例は読みやすくなっています。しかし、私はそれが効率の悪いランタイムの実行につながる可能性があることを心配しています。
ところで、複数のmap()関数が次々に(そしてそれらの間に他の関数がなく)あると、それらはコンパイラ/オプティマイザと単一のマップのみのジョブが実行されます。私はちょうどその証拠が必要です! – Gevorg