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

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

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

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

One Solution collect form web for “为什么Kotlin比Scala编译速度更快?”

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

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

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

源代码的由来:

  • 我把这个代码用于Kotlin ,改了很多import,因为显然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代码是“更密集”:)

  • Android:Kotlin TypeCastException:null不能转换为非nulltypes的kotlin.String
  • 我在java代码中实现了一个在kotlin中定义的接口。 有'空'types不允许在这里
  • 运行在Kotlin中编写的Apache Tomcat servlet时出错
  • Android studio3.0 kotlin classNotFoundException
  • 为什么在Kotlin中出现错误“Smart cast to'Long'是不可能的”? 但是,在Java中呢?
  • 我可以使用Java Scripting API作为脚本运行kotlin吗?
  • Kotlin编辑列表
  • 如何在Kotlin中读取环境variables?
  • 与Android和桌面项目共享一个Kotlin模块
  • 如何选择在Kotlin派生类中重写哪个Java重载?
  • 如何在GSON中反序列化Kotlin代表
  • Kotlin language will be the best programming language for Android.