2009-03-17 2 views
3

Когда вы пишете приложение на C#, а затем запустите его, не будет ли он скомпилирован снова в следующий раз, когда он будет запущен, или все, что используется, собирается перекомпилировать каждый раз, когда приложение запускается?Как работает компиляция JIT для кеширования?

Как работает компиляция JIT для кеширования?

ответ

4

Для любой DLL, не входящей в ngen'd, каждый раз, когда вы запускаете приложение, он будет повторно использовать код, который используется. Кэширование JIT-кода между прогонами той же DLL-библиотеки, отличной от ngen'd, отсутствует.

EDIT прояснилось ошибку с GAC и НГЕН

+0

Насколько я знаю, хранение NGEN и GAC две разные вещи. NGEN имеет мало смысла без GAC, но GAC не заменяет NGEN. –

+0

Кому-то, кто, по-видимому, задает вопрос начинающему, этот ответ довольно насыщен очень специализированными терминами :). И ngen точно не делает «pre-JIT», так как он не может проводить оптимизацию на основе поведения во время выполнения. – Joey

+0

@Toro, вы правы. Я неправильно вспомнил, что GAC'ing заставил ngen, но я думаю, что я был неправ. – JaredPar