【问题标题】:How do I simulate JIT optimizations to view the optimized byte code?如何模拟 JIT 优化以查看优化后的字节码?
【发布时间】:2015-12-29 20:29:58
【问题描述】:

有没有办法(最好在 Eclipse 中)模拟我的代码的 JIT 优化?我可以使用 Bytecode Visualizer 查看未优化的版本,但我还想查看代码如何随着 JIT 优化而随时间变化。我想确保我正在编写 JIT 友好的代码。

【问题讨论】:

  • 一般来说,努力编写后端友好的代码是不明智的。使用良好的算法编写正确、干净、结构良好的代码,但远离如何溺爱优化器的想法。
  • 我只能附和:只需编写清晰、结构良好的代码。 JIT 优化通常基于观察您的代码在运行中并对其做出假设,因此如果您的代码行为合理,JIT 更有可能做出正确的猜测。
  • 您无法模拟 JIT 优化,因为这些优化需要实际执行代码来收集优化参数。每次运行的结果都不一样……
  • @Holger 如此之多,以至于同一段代码可以在进程的生命周期内多次重新编译。
  • 过去一年我一直在思考这个问题。也许我应该改写这个问题:在我编写代码时,有什么可以用来查看 JIT 优化的障碍。例如,如果我的方法运行时间过长,是否会看到一个小警告说此方法太长而无法内联(我认为默认情况下超过 325 个字节)?

标签: java eclipse optimization bytecode jit


【解决方案1】:

一旦 JIT 运行,字节码就会被转换为机器码,因此没有“优化”字节码可供查看。

除非您在一个非常紧密的循环中进行数百万次迭代,否则您将注意力集中在错误的问题上。如果分析器显示此类问题,您可能会发布 代码,此处的期望可能会对您有所帮助。

【讨论】:

  • 您可以按照here的解释查看编译后的汇编代码
  • 嗯,可能存在代码既不是标准字节码也不是本机机器码的中间状态。
【解决方案2】:

我相信您正在寻找的是 JIT 生成的本机代码。有一些 JVM 参数会输出这个,尽管它并不适用于所有平台。见How to see JIT-compiled code in JVM?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-23
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-08-01
    • 2015-12-25
    • 2011-12-26
    • 2012-12-12
    相关资源
    最近更新 更多