Ngen в основном сокращает время запуска приложения .NET и рабочего набора приложения. Но у этого есть некоторые недостатки (от CLR Via C # Джеффри Рихтера):
Нет защиты интеллектуальной собственности
NGen'd файлы могут выйти из синхронизации
Низкая производительность по времени загрузки (перебазирование / связывание)
Низкая производительность во время исполнения
В связи со всеми перечисленными проблемами вы должны быть очень осторожны при рассмотрении вопроса об использовании
Ngen.exe. Для серверных приложений NGen.exe не имеет большого смысла, потому что только
первый запрос клиента испытывает снижение производительности; будущие запросы клиентов выполняются на высокой скорости. В
Кроме того, для большинства серверных приложений требуется только один экземпляр кода, поэтому
пособие по рабочему набору.
Для клиентских приложений NGen.exe может иметь смысл улучшить время запуска или уменьшить
рабочий набор, если сборка используется несколькими приложениями одновременно. Даже в случае в
Если сборка не используется несколькими приложениями, NGen'ом сборка может улучшить
рабочий набор. Более того, если NGen.exe используется для всех сборок клиентского приложения, CLR
совсем не нужно загружать JIT-компилятор, что еще больше сокращает рабочий набор. Конечно, если
только одна сборка не является NGen'd или если файл NGen'd сборки не может быть использован, JIT-компилятор
загрузится, и рабочий набор приложения увеличится.