首页 > 解决方案 > 使用即时编译验证 .NET CLR 优化的代码路径?

问题描述

为无益的标题道歉,我不确定我是否真的理解我所要求的正在发生。我对 CLR 和 JIT 做了什么或如何检查它是否在做我认为应该做的事情知之甚少,令人尴尬。

假设我有以下方法:

void DoSomething(bool log) {
   for (int i=0; i< 1000000; i++) {
      if (log) {
          Console.WriteLine(i);
      }
      Console.WriteLine(i*2);
   }
}

现在,如果我的方法调用是DoSomething(false),CLR/JIT 会知道不检查if (log)100,000 次吗?基本上,它会自动将其转换为:

void DoSomething_noLog() {
    for (int i=0; i< 1000000; i++) {
        Console.WriteLine(i*2);
      }
}

如果它确实知道自动执行此操作,我如何验证它确实在执行此操作?

标签: .netclrjit

解决方案


推荐阅读