mur*_*ngu 5 java static-analysis scala type-inference
在IDE(Idea)中第一次使用Scala时,我注意到自动完成速度明显较慢,然后编写java时.虽然有些放缓可能本身归功于当时的斯卡拉工具生态系统的相对不成熟,我怀疑某些这种放缓可能是分析代码的算法的复杂性,需要类型推断的固有属性.
Java的:
MyType type; type.doSomething() //Class of type already known
Run Code Online (Sandbox Code Playgroud)
斯卡拉:
val type = new MyType; type.doSomething() //Class of type must be inferred or cached
Run Code Online (Sandbox Code Playgroud)
虽然具有类型推断的语言更简洁(因此更易于阅读),但这是以牺牲较慢的工具为代价的吗?有固有的权衡吗?
是的。
在某种程度上,Scala 不可避免地较慢。推断类型、隐式和语法糖的成本之一是编译时间。确切的时间可以改进,但 Scala 的编译速度总是比 ex.java 慢。
就我个人而言,我很乐意做出这种权衡。对我来说,拥有一个干净且可读的代码库比编译时间重要得多(如果使用增量编译,编译时间通常不到 1 秒)。