【问题标题】:What does the 'optimise' scala compiler flag do?'优化' scala 编译器标志有什么作用?
【发布时间】:2011-10-05 23:06:36
【问题描述】:

我尝试在 2.7.7 版本中使用 scalac -optimise。那时我从未得到任何性能改进,但编译时间更长。

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

【问题讨论】:

    标签: performance scala compiler-construction compiler-optimization


    【解决方案1】:

    奇怪,居然有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 倍。

    结果给人...复杂的感觉。

    【讨论】:

    • 如果 scala 编译器作者就 scala 2.11 的这个标志的状态给出一个明确的答案会很高兴
    猜你喜欢
    • 2021-11-17
    • 2017-01-05
    • 2014-02-04
    • 2021-01-25
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多