为什么Kotlin比Scala编译速度更快?

当我们阅读Kotlin编程语言的维基百科描述时,它指出:

JetBrains的领导Dmitry Jemerov说,大多数语言没有他们正在寻找的功能,除了斯卡拉。 不过,他认为Scala的编译时间缓慢是一个明显的缺陷[4]。 Kotlin的既定目标之一就是尽快地编译Java。

他们是如何实现这一目标的? 为什么Scala编译时间太慢,以至于Kotlin的创建者都不能接受? 换句话说,Scala编译器的哪些特性使其比Kotlin编译器慢呢?

虽然我认为这个问题不适合堆栈溢出,因为它往往会产生主要基于意见的答案,下面是一个尝试:你有两种不同的语言,尤其是关于类型系统和两个完全独立的编译器实现。 所以期待他们拥有“相同”的编译速度已经是一个谬误了。 我把我的评论与另一个考察Scala编译器速度的问题联系起来。 基本上,它取决于很多因素,例如类型推理器和特定代码库所需的隐式解析的工作量。

不过,我运行了一个非常快速的例子:我在Kotlin和Scala中编译了一些Project Euler解决方案。 这给了我一个新的整个项目的重新编译:

  • Kotlin6 (连续重建5秒
  • 在斯卡拉10秒 (连续重建7秒 )。

源代码的由来:

  • 我把这个代码用于Kotlin ,改了很多进口,因为显然Kotlin标准库在这期间改变了,为了编译它。
  • 我把这个代码用于Scala ,并将其转换为一个sbt项目,每个问题都包含在一个object pXY extends App { ... } ,并将其放置在一个包euler

然后,我删除了只有一个解决方案的文件,最终有26个问题。 这两个项目都使用Rebuild Project与IntelliJ IDEA 15 CE编译。


为了给这个行业提供另一个角度,我跑了wc (字数)来源:

 // lines words bytes 931 3603 33087 total // Kotlin 261 1166 6472 total // Scala 

所以,现在你可以争辩说,Kotlin编译器需要处理“更多的源代码”或Scala代码是“更密集”:)