我尝试使用 scalac
-optimise
版本 2.7.7。那时我从未获得任何性能改进,但编译时间更长。
Scala 2.9.0 的情况更好吗?该标志目前涵盖哪些优化?
奇怪,scala 用户组上有一个类似的问题:
Rex Kerr当时(5月)回答:
我从未发现过生产代码显着加速的情况 使用
,至少在使用 Sun JVM 时。 我承认在某些方面 情况可能会发生,但似乎对什么应用了类似的优化 JVM 已经这样做了。 也许如果优化深度有限制, 使用 -optimise 将删除一些层,然后允许 JVM 获得 还有几个。 但考虑到如何,我大多不再费心去测试它 很多情况(几十个)我已经尝试过,运行时没有改变 可衡量。-optimise
我预计这会对更为保守的虚拟机产生影响(例如 JRockit)或不太复杂(例如 Dalvik)。
伊斯梅尔·朱马添加:
scala发行版实际上是用-optimise编译的,但确实 除非将参数传递给 scalac,否则它不会打开。
是否还不够成熟,或者是否会导致错误、语义改变等?
据我了解,团队决定采取保守态度,启用 它仅适用于 scala 发行版作为初始步骤(在 Scala 中 2.8.0)。也许考虑在接下来的时间里扩展它是一个好主意 主要版本。
有关 Scala2.9 中“
-optimise
”(以及其他因素)的影响,请参阅此 scala 语言线程“Scala2.9 速度较慢?”.
我有点担心。在看到
确实在 2.9.0 上优化了“理解”之后,我对代码进行了基准测试,发现它比 2.8.1 慢了大约 2.5 倍。-optimize
结果留下了……复杂的感觉。