类型推断是否会降低IDE中的自动完成速度

时间:2016-02-03 13:30:49

标签: java scala static-analysis type-inference

在IDE(Idea)中第一次使用Scala时,我注意到自动完成速度明显慢,然后编写java时。虽然一些减速可能归功于当时scala工具生态系统的相对不成熟,但我怀疑这种减速可能是解析代码需要类型推断的算法复杂性的固有特性。

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

虽然具有类型推断的语言更简洁(因此更容易阅读),但这是以牺牲较慢的工具为代价的吗?有固有的权衡吗?

1 个答案:

答案 0 :(得分:1)

在某种程度上,Scala不可避免地会变慢。推断类型,含义和语法糖的成本之一是编译时间。确切的时间可以改进,但Scala的编译总是比ex.java慢。

就个人而言,我很乐意做出这种权衡。拥有一个干净且可读的代码库对我来说比编译时更重要(如果使用增量编译,通常不到1秒)。