我如何衡量 CLR 在方法的 JIT 编译中所花费的时间?

How may I measure the time taken by the CLR in JIT compilation of a method?

.NET Framework 是否为我们提供了 API 来大致衡量 JIT 编译器在编译方法时所花费的时间?

目前,我使用的是以下几种组合,虽然有帮助,但需要更令人满意和可靠的方法。

  1. 我在方法的开头和结尾写了profile语句,运行第一次写,注意时间。

    然后我再做一次,注意执行时间的差异。

    但是,这仅适用于纯函数的纯计算方法。任何一种 side-effect 都可能以某种方式扭曲这些测量值。

  2. 我看标题下的性能计数器.NET CLR Jit.

您可以从 here.

下载 Microsoft 的 CLRProfiler 的源代码

分析器使用 JITCompilationStart/JITCompilationFinished 方法进行分析等。您可以查看代码并根据需要进行扩展。