有没有办法统计执行的IL指令的数量?

Eri*_*bes 5 .net c# benchmarking cil

我想对 C# 进程进行一些基准测试,但我不想使用时间作为向量 - 我想计算在特定方法调用中执行的 IL 指令的数量。这可能吗?

编辑我并不是指方法主体的静态分析 - 我指的是执行的实际指令数量 - 因此,例如,如果方法主体包含循环,则计数将增加,无论指令数量如何循环向上 * 循环迭代的次数。

Dre*_*kes 4

我认为不可能做你想做的事。这是因为 IL 仅在 JIT(即时)编译期间使用。当该方法运行时,IL 已转换为本机机器代码。因此,虽然可以静态地计算给定方法/类型/程序集中的 IL 指令数量,但在运行时没有这个概念。

您尚未表明您想要了解将解释的 IL 指令的数量。鉴于方法体的 IL 计数与机器代码指令的实际数量之间只有松散的相关性,我看不出知道这个数字会实现什么(除了满足您的好奇心之外)。