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

17

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

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

  

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

    
задан Christian Gollhardt 22.12.2008 в 10:19
источник

6 ответов

22

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

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

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

    
ответ дан Jon Skeet 22.12.2008 в 10:24
источник
  • Перед тем, как спуститься по маршруту NGEN, лучше сначала посмотреть, можете ли вы обрезать количество загружаемых ссылок на сборку, а затем перейти по маршруту NGEN. –  Paul Betts 04.06.2009 в 06:52
  • Действительно ли ASP.NET использует сборку NGen'ed? –  foson 04.06.2009 в 06:55
  • Не могли бы вы подробнее рассказать о графиках Performance Manager? Если я это сделаю, я вернусь к этому сообщению :( –  Christian Gollhardt 31.12.2016 в 16:40
  • @ChristianGollhardt: Я далек от эксперта, но если вы откроете Performance Manager, вы можете добавить графики для всех видов вещей. –  Jon Skeet 31.12.2016 в 16:54
7

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

    
ответ дан foson 02.06.2009 в 07:06
источник
1

Я не уверен, что основным преимуществом NGEN является только время запуска - если приложение страдает от высокого «% времени в JIT », это указано как потенциальное средство: Ссылка .

Обсуждение тесно связано с другим вопросом о том, как ответ дан Nariman 21.10.2009 в 22:13

источник
0

Да, это видео youtube демонстрирует это на самом деле Видео настройки производительности NGEN.exe

Но слово осторожности проверяет, проверяет и затем реализует его.

    
ответ дан Shivprasad Koirala 12.06.2014 в 17:41
источник
0

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

  

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

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

    
ответ дан Edward Brey 02.08.2014 в 02:10
источник
0

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

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

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

    
ответ дан alexmac 28.05.2009 в 23:59
источник
  • Это было только в случае .NET framework 1.0 / 1.1. В версии 2.0 и более встроенные изображения могут быть доступны для всех доменов приложений. См. Различные версии msdn.microsoft.com/en-us/library/6t9t5wcf.aspx. –  foson 02.06.2009 в 06:56
  • Круто, я не понял, что спасибо! –  alexmac 02.06.2009 в 12:01