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

时间:2016-01-05 15:59:44

标签: scala kotlin

当我们阅读Kotlin编程语言的wikipedia描述时,它表明:

  JetBrains领导人Dmitry Jemerov表示,除了Scala之外,大多数语言都没有他们想要的功能。但是,他认为Scala的编译时间很慢是一个明显的缺陷。[4] Kotlin的既定目标之一就是尽可能快地编译Java。

他们是如何实现这一目标的?为什么Scala编译时间太慢以至于Kotlin创作者无法接受?或者 - 换句话说 - Scala编译器的哪些功能使它比Kotlin编译器慢?

1 个答案:

答案 0 :(得分:26)

虽然我认为这个问题不适合Stack Overflow,因为它往往主要产生基于意见的答案,但这里有一个尝试:你有两种不同的语言,特别是关于类型系统,以及两个完全独立的编译器实现。所以期望它们具有“相同”的编译速度已经是一种谬论。我在评论中链接了另一个检查Scala编译器速度的问题。基本上,它取决于许多因素,例如类型推断器的工作量和特定代码库所需的隐式解析。

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

  • Kotlin中的6秒(连续重建中 5秒
  • Scala中的10秒(在连续重建中, 7秒)。

源代码的来源:

  • 我拿了this code for Kotlin,改变了很多进口,因为显然Kotlin标准库在此期间发生了变化,以便进行编译。
  • 我带了this code for Scala,并将其转换为sbt项目,每个问题都包含在object pXY extends App { ... }中,并将其放在包euler中。

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

为了对这项业务提供另一种观点,我对来源进行了wc(字数统计):

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

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