Gok*_*u__ 11 scala playframework
我过去两个月一直在使用Scala.我也在使用Play Framework作为一个小应用程序.我观察到即使对于打印"Hello World"的程序,编译也很慢.为什么这么慢?有没有减少时间的提示?
Mar*_*sky 35
你的编译速度有多快?
scalac的速度受两个因素的限制:
它是一个在JVM上运行的相当大的程序.因此,启动时间不是很好,因为必须(1)启动JVM(2)将scalac加载到其中(3)JIT编译大部分内容以获得速度.典型的启动时间为2-4秒,并且前几次scalac运行速度不是很快.如果您的设置是正确的,那么scalac将保持驻留状态并在正在运行的JVM中"热",这将减轻这种情况.与所有IDE一样,这样做.我建议使用其中一个选项,否则,如果必须从命令行编译,请使用"fsc",这也会使编译器驻留.(例证:人们通常不会抱怨REPL的速度,但REPL使用与其他人相同的scalac.区别在于编译器保持驻留).
即使是一个完全热身的scalac也必须应对有时需要复杂类型推理的程序.因此,对于具有非常简单的类型系统(如Go)的语言,它不能像编译器一样快.我看到我3岁的Macbook Pro编译速度为500-800线/秒.这不会创造世界纪录,但它足以进行渐进式编译,这正是IDE和sbt现在所做的.我目前的项目是大约50K行代码,但我基本上从不等待我的IDE(Scala IDE for Eclipse)中的编译器,因为渐进式编译足够快.有些人看到的编译速度低于此.这通常是因为它们使用编译成本非常高的构造(通常从库中导入),例如复杂的隐式参数层次结构.
嗯,这是一个重复的问题,但由于它包含另一个更实用的部分,我会尝试给出一个答案.
首先要做的事情是:由于语言功能丰富,编译速度很慢.当然,有些例子中,具有大致相同功能集的语言编译得更快,但我们拥有的功能.我想到的第一件事是:
对于更详细的回答,我建议您参考Scala的创始人Odersky博士本人:.
至于问题的第二部分,这取决于你如何编译:
scalac
,你将无法获得更快的速度,因为你必须一遍又一遍地分开发射.sbt
,内置的增量编译器(服务器)将提供给您的服务:http://www.scala-sbt.org/0.13.5/docs/Detailed-Topics/Understanding-incremental-recompilation.htmlsbt
),它sbt server
也会使用:https://www.typesafe.com/blog/typesafe-activator-130-released-contains-new-sbt-server-and-ui我认为在你的情况下坚持使用Activator是最好的选择,因为你已经使用了Play.但请记住,这不是一个灵丹妙药:你仍然会得到一个缓慢的第一次编译和后续运行的速度取决于你引入代码的变化.
啊,还有一个硬件方面.毫无疑问,强大的CPU,足够的RAM和快速(最好是SSD)磁盘驱动器肯定会降低编译速度.
归档时间: |
|
查看次数: |
6053 次 |
最近记录: |