Bei der Verwendung von Scala zum ersten Mal in einer IDE (Idee) habe ich festgestellt, dass Autovervollständigung ist deutlich langsamer, dann beim Java-Codierung. Obwohl ein Teil der Verlangsamung der relativen Unreife des Scala Tooling-Ökosystems zu diesem Zeitpunkt geschuldet sein könnte, vermute ich, dass ein Teil dieser Verlangsamung eine inhärente Eigenschaft der algorithmischen Komplexität des Parsing-Codes sein kann, die Typinferenz erfordert.Verursacht Inferenz verlangsamen Autovervollständigung in der IDE
java:
MyType type; type.doSomething() //Class of type already known
scala:
val type = new MyType; type.doSomething() //Class of type must be inferred or cached
Obwohl Sprachen, die Typinferenz haben viel mehr knappe (und daher leichter zu lesen) sind, diese auf Kosten der langsameren Werkzeug kommt ? Gibt es einen inhärenten Kompromiss?
Danke für Ihren Beitrag. Meine Frage richtet sich mehr auf das Tooling, von dem ich weiß, dass es mit der Kompilierzeit zusammenhängt, aber die automatische Vervollständigung kann auch durch halbfertige Kompilierung (Lexing ohne Bytecode-Generierung) und statische Analyse erleichtert werden. Ich denke also, ich frage, ob Typinferenz verhindert, dass solche Leistungsoptimierungen verwendet werden, was zu langsameren Werkzeugen führt. – murungu
Ich denke, ich bin nicht Experte genug, um das zu beantworten. Ich weiß nicht, Scala (und Eclipse und Intellij) Interna zu sagen, ob ein expliziter Typ Autovervollständigung hilft. Beachten Sie, dass eine Scala-IDE normalerweise sowohl normale Methoden als auch _implizit verfügbare Methoden durchsucht. Siehe zum Beispiel "abcde" .take (3) (Methode 'take' wird bei' String' aufgerufen). – VasyaNovikov