Подтвердить что ты не робот

Помогает ли это использовать NGEN?

Лучше ли использовать NGEN приложение ASP.NET, когда мы знаем, что это не изменится? Или JIT достаточно хорош?

Единственная причина, по которой я спросил, состояла в том, что в этой статье Джеффри Рихтера в 2002 году говорится:

И, конечно же, Microsoft очень усердно работает над улучшением CLR и его JIT-компилятор, чтобы он работал быстрее, производит более оптимизированный кода и использует память более эффективно. Эти улучшения будут время. Для разработчиков, которые не могут ждать,.NET Framework redistributable включает утилиту NGen.exe.

4b9b3361

Ответ 1

NGen поможет только время запуска - это не делает код выполняться быстрее, чем после JITting. Действительно, я считаю, что есть некоторые оптимизации, которые NGen не делает, но JIT делает.

Итак, главный вопрос: есть ли у вас проблема со временем запуска? Я не знаю, сколько времени запуска приложения ASP.NET будет JITting против других затрат, кстати... вам, вероятно, следует посмотреть графики Performance Manager для JIT, чтобы рассказать вам, сколько времени это действительно стоит вам.

(Что касается доступности, наличие нескольких серверов, чтобы вы могли выполнять перепрограммирование, вы получите гораздо больше преимуществ, чем один сервер с веб-приложением NGENed.)

Ответ 2

NGen не подходит для ASP.NET - создание DLL файлов в папке bin не является последним шагом - они снова скомпилируются с настройками web/maching.config, применяемыми в вашем C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files. Вместо NGen, чтобы уменьшить начальное время загрузки, используйте инструмент публикации сайта или aspnet_compiler.exe

Ответ 3

Я не уверен, что первичная выгода NGEN заключается только в том, чтобы начать работу - если приложение страдает от высокого % Time в JIT, это указано как потенциальное средство: http://msdn.microsoft.com/en-us/library/dd264972(VS.100).aspx.

Обсуждение тесно связано с другим вопросом о том, как машинный код JIT'd кэшируется и повторно используется?

Ответ 5

NGen помогает время запуска. Например, Документация Entity Framework говорит об использовании NGen:

Эмпирические наблюдения показывают, что собственные изображения сборок в EF могут сокращаться между 1 и 3 секундами времени запуска приложения.

Контекст - это только сборки Entity Framework. NGenning других сборок обеспечит дополнительное ускорение.

Ответ 6

Я смотрел сегодня вечером и наткнулся на следующее:

Среда общего языка не может загружать изображения, созданные с помощью NGEN, в общий домен приложения. Поскольку стандартные сборки ASP.NET являются общими и затем загружаются в общий домен приложения, вы не можете использовать Ngen.exe для их установки в собственный кеш образа на локальном компьютере. http://support.microsoft.com/kb/331979

Не уверен, что это относится только к сборкам, на которые ссылается приложение ASP.net или само приложение?