Проверка. NET CLR-оптимизированные пути кода с компиляцией Just in Time? - PullRequest
0 голосов
/ 18 марта 2020

Извините за бесполезный заголовок, я не уверен, что на самом деле понимаю, что происходит то, что я спрашиваю. Я смущенно мало знаю о том, что делает 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);
      }
}

Если он знает, что делает это автоматически, как я могу убедиться, что он действительно это делает?

...