Sind die folgenden zwei Codeblöcke gleichwertig in Bezug auf die Leistung?Verbrühung 'multiple map()' Optimierung
val input: TypedPipe[Person] = ....
input
.map(_.getName)
.map(_.split(" "))
und ...
val input: TypedPipe[Person] = ....
input
.map(_.getName.split(" "))
Insbesondere wird Verbrühungen geht um den Code zu optimieren und eine einzelne Karte nur Job für beide oben die Schnipsel zu allen Zeiten ausführen? Was ist, wenn die Kartenfunktionen viel komplexer sind als GetName/Split?
IMO (und für weit komplexere Kartenfunktionen) ist das erste Beispiel besser lesbar. Ich bin jedoch besorgt, dass dies zu einer weniger effizienten Laufzeitausführung führen könnte.
Übrigens ist meine Vermutung, dass, wenn es mehrere map() - Funktionen nacheinander (und ohne irgendwelche anderen Funktionen dazwischen) gibt, sie vom Compiler/Optimizer und einer einzigen in eine einzige zusammengelegt werden Nur-Karten-Job wird ausgeführt. Ich brauche nur einen Beweis dafür! – Gevorg