'optimize'scala编译器标志有什么作用?

时间:2011-07-15 08:12:15

标签: performance scala compiler-construction compiler-optimization

我尝试使用版本为2.7.7的scalac -optimise。那时我从来没有得到任何性能改进,但编译花费的时间更长。

Scala 2.9.0中的情况是否更好?国旗目前涵盖哪些优化措施?

1 个答案:

答案 0 :(得分:15)

奇怪,有一个similar question on the scala-user group

Rex Kerr当时(5月)回答:

  

我从未发现生产代码显着加速的情况   使用-optimise,至少在使用Sun JVM时。我批准了一些   它可能发生的情况,但它似乎应用类似的优化   JVM已经做好了。也许如果优化深度有限制,   使用-optimise将删除几个层,然后允许JVM获取   多一点。但鉴于如何,我大多不再费心去测试了   很多情况(几十个)我已经尝试过运行时没有改变的地方   可测量。

     

我预计它会对更保守的虚拟机产生影响(例如   JRockit)或不太复杂(例如Dalvik)。


Ismael Juma补充道:

  

scala发行版实际上是用-optimise编译的,但确实如此   除非将参数传递给scalac,否则它不会打开。

     
    

它不够成熟,还是会导致错误,改变语义等?

  
     

据我了解,该团队决定保守并启用   它仅用于scala分发作为初始步骤(在Scala中   2.8.0)。也许最好考虑在下一次扩展它   主要发布。


有关Scala2.9中“-optimise”(以及其他因素)的影响,请参阅此scala-language thread called "Scala2.9 slower?"

  
    

我有点担心。在看到-optimize确实在2.9.0上对“理解”进行了优化之后,我对代码进行了基准测试,发现它比2.8.1慢了约2.5倍。

  

结果留下了......混合的感觉。