【发布时间】:2011-10-05 23:06:36
【问题描述】:
我尝试在 2.7.7 版本中使用 scalac -optimise。那时我从未得到任何性能改进,但编译时间更长。
Scala 2.9.0 的情况是否更好?该标志目前涵盖了哪些优化?
【问题讨论】:
标签: performance scala compiler-construction compiler-optimization
我尝试在 2.7.7 版本中使用 scalac -optimise。那时我从未得到任何性能改进,但编译时间更长。
Scala 2.9.0 的情况是否更好?该标志目前涵盖了哪些优化?
【问题讨论】:
标签: performance scala compiler-construction compiler-optimization
奇怪,居然有similar question on the scala-user group:
Rex Kerr当时回答(五月):
我从未发现生产代码显着加快的情况 至少在使用 Sun JVM 时使用
-optimise。我承认在某些 在这种情况下它可能会发生,但它似乎对什么应用了类似的优化 JVM 已经这样做了。也许如果优化深度有限制, 使用 -optimise 将删除几层,然后允许 JVM 获得 再多一点。但考虑到如何 很多情况下(几十个)我已经在运行时没有改变的地方尝试过 可衡量的。我预计它会对更保守的虚拟机产生影响(例如 JRockit)或不太复杂的(例如 Dalvik)。
Ismael Juma 添加:
scala 发行版实际上是用 -optimise 编译的,但确实 除非将参数传递给 scalac,否则它不会打开。
是不够成熟,还是会导致bug、语义改变等?
据我了解,团队决定保守并启用 它仅用于 scala 分发作为初始步骤(在 Scala 中 2.8.0)。也许考虑在下一个扩展它是个好主意 主要版本。
关于 Scala2.9 中'-optimise'(以及其他因素)的影响,请参阅此scala-language thread called "Scala2.9 slower?"。
我有点担心。在看到
-optimize确实在 2.9.0 上优化了“理解”之后,我对代码进行了基准测试,发现它比 2.8.1 慢了大约 2.5 倍。
结果给人...复杂的感觉。
【讨论】: