为什么Scala程序的编译速度非常慢?
过去两个月我一直在使用Scala。我还在一个小应用程序中使用Play框架。我观察到,即使是打印“Hello World”的程序,编译也非常慢。为什么这么慢?有没有减少时间的建议?好吧,这是一个重复的问题,但因为它包含了另一个更实际的部分,我还是会尝试给出一个答案 首先,编译速度很慢,因为该语言具有丰富的功能。当然,在一些例子中,具有几乎相同特性集的语言编译速度更快,但我们拥有我们所拥有的。我首先想到的是:为什么Scala程序的编译速度非常慢?,scala,playframework,Scala,Playframework,过去两个月我一直在使用Scala。我还在一个小应用程序中使用Play框架。我观察到,即使是打印“Hello World”的程序,编译也非常慢。为什么这么慢?有没有减少时间的建议?好吧,这是一个重复的问题,但因为它包含了另一个更实际的部分,我还是会尝试给出一个答案 首先,编译速度很慢,因为该语言具有丰富的功能。当然,在一些例子中,具有几乎相同特性集的语言编译速度更快,但我们拥有我们所拥有的。我首先想到的是: 类型推断 隐式解析 宏观扩张 类型级编程,导致大量的特定类(匿名类),这些类都需要考虑
- 类型推断
- 隐式解析
- 宏观扩张
- 类型级编程,导致大量的特定类(匿名类),这些类都需要考虑
- 如果您使用bare
,则无法获得更高的速度,因为您必须反复启动separatescalac
- 如果您使用
,内置的增量编译器(服务器)将为您服务:sbt
- 如果您使用IntelliJ IDEA,它还有它的增量编译器:
- 如果您使用Typesafe Activator(即基本上您使用的是
),它也会使用sbt
:sbt服务器
啊,还有一个硬件方面。不用说,强大的CPU、足够的RAM和快速(最好是SSD)磁盘驱动器肯定会降低编译速度。在您的情况下,编译速度有多快 scalac的速度受两个因素限制:
不幸的是,编译时间对scala来说绝对是个问题。我喜欢这种语言,但我想我们必须接受它。看到目标——“编译至少与java一样快”,用于理论回答,认为斯卡拉的类型系统是图灵完成,这意味着编译实际上可以占用无限长的可能副本。