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