当我们阅读Kotlin编程语言的维基百科描述时,它表明:
JetBrains领导人Dmitry Jemerov表示,除了Scala之外,大多数语言都没有他们想要的功能.但是,他认为Scala的编译时间很慢是一个明显的缺陷.[4] Kotlin的既定目标之一是尽可能快地编译Java.
他们是如何实现这一目标的?为什么Scala编译时间太慢以至于Kotlin创作者无法接受?或者 - 换句话说 - Scala编译器的哪些功能使它比Kotlin编译器慢?
虽然我认为这个问题不适合Stack Overflow,因为它倾向于主要产生基于意见的答案,但这里有一个尝试:你有两种不同的语言,特别是关于类型系统,以及两个完全独立的编译器实现.所以期望它们具有"相同"的编译速度已经是一种谬论.我在评论中链接了另一个检查Scala编译器速度的问题.基本上,它取决于许多因素,例如类型推断器的工作量和特定代码库所需的隐式解析.
然而,我运行了一个非常快速的例子:我在Kotlin和Scala中编译了一些Project Euler解决方案.这让我对整个项目进行了新的重新编译:
Kotlin 6秒(连续重建时间缩短至5秒)
Scala中10秒(连续重建时间缩短至7秒).
源代码的来源:
我把这个代码用于Kotlin,改变了很多进口,因为显然Kotlin标准库在此期间发生了变化,以便进行编译.
我把这个代码用于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代码"更密集":)