首页 文章

为什么Kotlin编译速度比Scala快? [关闭]

提问于
浏览
6

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

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

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

1 回答

  • 26

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

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

    • 6 seconds in Kotlin (在连续重建中下至 5 seconds

    • 10 seconds in Scala (在连续重建中下至 7 seconds ) .

    源代码的来源:

    • 我拿了this code for Kotlin,改变了很多进口,因为显然Kotlin标准库在此期间发生了变化,以便进行编译 .

    • 我拿了this code for 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代码“更密集”:)

相关问题