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