【问题标题】:How can you check whether method was inlined?如何检查方法是否内联?
【发布时间】:2012-06-17 09:42:16
【问题描述】:

我刚刚阅读了一篇博客,上面写着 “...以前由于其他条件而无法内联的方法仍然没有内联。我检查了以下内容,这些方法都没有内联...”

我无法联系到作者,而且我认为它可能对 SO 用户也很有趣。所以我想问一下:

如何检查一个方法实际上是否内联(或内联)?

【问题讨论】:

    标签: .net-4.0 .net-4.5


    【解决方案1】:

    This blog 关于内联状态以及其他有趣内容的条目:

    Steven 通过抛出异常然后以编程方式做到了这一点 检查与异常关联的堆栈跟踪。这 当您尝试自动化分析时是有意义的,但是对于 简单的一次性案例,简单看一下更简单更强大 在本机指令。有关如何使用的详细信息,请参阅this blog 视觉工作室。

    ie:显然,对于休闲研究而言,只需阅读实际执行的内容即可。

    【讨论】:

    • > 只是读取实际执行的内容 - 我会这么认为.. 但这里的问题是 - 你能保证 JIT 在正常运行时不会以不同方式优化它(与在 VS 主机下运行相比)?
    • P.S.上面的评论是一个反问。你不能保证。此外,我几乎可以保证,如果你单独运行它,它会改变。
    • @Bobb 实际上我认为这是个严重的坏消息,因为它会严重阻碍你调试令人讨厌和晦涩的问题的能力......
    • 我正在对不同的代码进行大量基准测试。而且我可以肯定地告诉你,如果你从 VS 内部运行时间敏感的测试并且独立运行,你总是会得到不同的结果......我不是 VS 大师,从不感兴趣。所以我无法解释为什么,但事实就是如此。 JIT 显然使用了不同的策略。附言我不认为这是个坏消息。如果您知道自己在做什么,它就可以正常工作...我相信这在 Microsoft 某处有所描述。人们只是懒得读书。
    猜你喜欢
    • 2021-09-09
    • 2021-05-08
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 1970-01-01
    • 2012-02-10
    • 2018-09-29
    相关资源
    最近更新 更多