“优化”scala 编译器标志有什么作用?

问题描述 投票:0回答:1

我尝试使用 scalac

-optimise
版本 2.7.7。那时我从未获得任何性能改进,但编译时间更长。

Scala 2.9.0 的情况更好吗?该标志目前涵盖哪些优化?

scala performance compiler-optimization
1个回答
15
投票

奇怪,scala 用户组上有一个类似的问题

Rex Kerr当时(5月)回答:

我从未发现过生产代码显着加速的情况 使用

-optimise
,至少在使用 Sun JVM 时。 我承认在某些方面 情况可能会发生,但似乎对什么应用了类似的优化 JVM 已经这样做了。 也许如果优化深度有限制, 使用 -optimise 将删除一些层,然后允许 JVM 获得 还有几个。 但考虑到如何,我大多不再费心去测试它 很多情况(几十个)我已经尝试过,运行时没有改变 可衡量。

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


伊斯梅尔·朱马添加:

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

是否还不够成熟,或者是否会导致错误、语义改变等?

据我了解,团队决定采取保守态度,启用 它仅适用于 scala 发行版作为初始步骤(在 Scala 中 2.8.0)。也许考虑在接下来的时间里扩展它是一个好主意 主要版本。


有关 Scala2.9 中“

-optimise
”(以及其他因素)的影响,请参阅此 scala 语言线程“Scala2.9 速度较慢?”.

我有点担心。在看到

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

结果留下了……复杂的感觉。

© www.soinside.com 2019 - 2024. All rights reserved.