SCALA-Leistung: Imperativer VS-Funktionsstil
-
29-09-2020 - |
Frage
Ich bin neu in Scala und liest gerade scala durch Beispiel .In Kapitel 2 hat der Autor 2 verschiedene Versionen von QuickSort.
generasacodicetagpre. generasacodicetagpre.Hinweis: Der Autor hat den Funktionsstil erwähnt, verwendet mehr Speicher.
Lösung
Es hängt davon ab. Wenn Sie in die Scala-Quellen schauen, wird es oft einen imperativen Stil "unter der Haube" verwendet, um aufführbar zu sein - aber in vielen Fällen genau diese Tweaks zulassen, dass Sie write performant funktional Code. Normalerweise können Sie eine funktionelle Lösung finden, die schnell genug ist, aber Sie müssen vorsichtig sein und wissen, was Sie tun (insbesondere in Bezug auf Ihre Datenstrukturen). Z.B. Das Array Concat im zweiten Beispiel ist nicht nett, aber wahrscheinlich nicht so schlimm - aber mit Listen hier und konkat sie mit ::: würde überkill sein.
Das ist jedoch nicht mehr als ausgebildete Erraten, wenn Sie nicht eigentlich die Leistung messen. In komplexen Projekten ist es wirklich schwer, die Leistung vorherzusagen, zumal die Dinge wie Objekterstellung und Methodenaufrufe immer mehr vom Compiler und der JVM optimiert werden.
Ich würde vorschlagen, mit dem funktionalen Stil zu beginnen. Wenn es zu langsam ist, profitieren Sie es. Normalerweise gibt es eine bessere Funktionslösung. Wenn nicht, können Sie den imperativen Stil (oder eine Mischung von beiden) als letztes Resort verwenden.