Является ли основной метод JIT?

Насколько я помню, функция JIT'd при вызове во второй раз.

А как насчет метода Main? Будет ли код внутри JIT?

Если я измерю какой-то кусок кода, нужно ли мне обернуть его функцией?


person Lukasz Madon    schedule 29.09.2010    source источник


Ответы (3)


Весь код .NET (MSIL) должен быть JIT-скомпилирован (скомпилирован в собственный код) перед выполнением.

Возможно, вы имеете в виду тот факт, что после JIT кода он кэшируется. Накладные расходы на JIT-процесс возникают только один раз. Если вы хотите выполнить тест без дополнительных затрат JIT, вам придется «разогреть» тест или, возможно, использовать NGEN для постоянной компиляции MSIL.

person Martin Liversage    schedule 29.09.2010

Чтобы ответить на побочный вопрос:

Если я измерю какой-то кусок кода, нужно ли мне обернуть его функцией?

Предположительно, речь идет об измерении производительности некоторого кода, когда обычно советуют поместить его в метод и вызвать этот метод хотя бы один раз, прежде чем запускать ваши временные циклы. Это сделано для того, чтобы вы избегали накладных расходов JIT, которые обычно возникают при первом вызове метода.

person Damien_The_Unbeliever    schedule 29.09.2010

Метод прерывается при первом вызове.

.Net не может выполнять неспециализированные методы.

Итак, main взволнован.

См. также этот ответ Джона Скита.

person GvS    schedule 29.09.2010