Основной метод JIT'd? - PullRequest
       26

Основной метод JIT'd?

2 голосов
/ 29 сентября 2010

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

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

Если я получу некоторый кусок кода, я должен обернуть его в функцию?

Ответы [ 3 ]

6 голосов
/ 29 сентября 2010

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

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

3 голосов
/ 29 сентября 2010

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

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

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

1 голос
/ 29 сентября 2010

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

.Net не может выполнять не объединенные методы.

Таким образом, main соответствует.

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

...