Содержание

Повышение производительности запуска с помощью NGen — EF6

Twitter LinkedIn Facebook Адрес электронной почты

  • Статья
  • Чтение занимает 4 мин

Примечание

Только в EF6 и более поздних версиях. Функции, API и другие возможности, описанные на этой странице, появились в Entity Framework 6. При использовании более ранней версии могут быть неприменимы некоторые или все сведения.

Платформа .NET Framework поддерживает создание собственных образов для управляемых приложений и библиотек в качестве способа ускорить запуск приложений, а также в некоторых случаях использует меньше памяти. Образы машинного кода создаются путем преобразования сборок управляемого кода в файлы, содержащие инструкции машинного кода перед выполнением приложения, что избавляет от необходимости создавать собственные инструкции во время выполнения приложения.

До версии 6 основные библиотеки среды выполнения EF были частью платформа .NET Framework, а собственные образы были созданы автоматически для них. Начиная с версии 6 вся среда выполнения EF была объединена в пакет NuGet EntityFramework. Теперь образы машинного кода должны создаваться с помощью средства командной строки NGen.exe для получения аналогичных результатов.

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

Использование NGen.exe

Самой основной функцией средства NGen.exe является установка (т. е. создание и сохранение на диске) собственных образов сборки и всех его прямых зависимостей. Вот как это можно достичь:

  1. Откройте окно командной строки с правами администратора.

  2. Измените текущий рабочий каталог на расположение сборок, для которого требуется создать собственные образы:

    cd <*Assemblies location*>  
    
  3. В зависимости от операционной системы и конфигурации приложения может потребоваться создать собственные образы для 32-разрядной архитектуры, 64-разрядной архитектуры или для обоих.

    Для 32-разрядного запуска:

    %WINDIR%\Microsoft.NET\Framework\v4.0.30319\ngen install <Assembly name>  
    

    Для 64-разрядного запуска:

    %WINDIR%\Microsoft. NET\Framework64\v4.0.30319\ngen install <Assembly name>  
    

Совет

Создание собственных образов для неправильной архитектуры является очень распространенной ошибкой. Если вы сомневаетесь, вы можете просто создать собственные образы для всех архитектур, которые применяются к операционной системе, установленной на компьютере.

NGen.exe также поддерживает другие функции, такие как удаление и отображение установленных собственных образов, постановка в очередь создания нескольких образов и т. д. Дополнительные сведения об использовании см. в документации поNGen.exe.

Когда следует использовать NGen.exe

При выборе сборок для создания собственных образов в приложении на основе EF версии 6 или более поздней следует рассмотреть следующие варианты:

  • Основная сборка среды выполнения EF, EntityFramework.dll: типичное приложение на основе EF выполняет значительный объем кода из этой сборки при запуске или при первом доступе к базе данных. Следовательно, создание собственных образов этой сборки приведет к наибольшему повышению производительности запуска.
  • Любая сборка поставщика EF, используемая приложением
    : время запуска также может немного выиграть от создания собственных образов этих файлов. Например, если приложение использует поставщик EF для SQL Server необходимо создать собственный образ для EntityFramework.SqlServer.dll.
  • Сборки и другие зависимости приложения. В документации поNGen.exe рассматриваются общие критерии выбора сборок для создания собственных образов и влияния собственных образов на безопасность, расширенных параметров, таких как «жесткая привязка», таких как использование собственных образов в сценариях отладки и профилирования и т. д.

Совет

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

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

Использование NGen.exe на компьютере разработки

Во время разработки JIT-компилятор .NET обеспечивает лучший общий компромисс для кода, который часто меняется. Создание собственных образов для скомпилированных зависимостей, таких как сборки среды выполнения EF, может помочь ускорить разработку и тестирование, вырезав несколько секунд в начале каждого выполнения.

Хорошим местом для поиска сборок среды выполнения EF является расположение пакета NuGet для решения. Например, для приложения, использующее EF 6.0.2 с SQL Server и нацеливание на .NET 4.5 или более поздней версии, можно ввести следующее в окне командной строки (не забудьте открыть его от имени администратора):

cd <Solution directory>\packages\EntityFramework.6.0.2\lib\net45
%WINDIR%\Microsoft.
NET\Framework\v4.0.30319\ngen install EntityFramework.SqlServer.dll %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install EntityFramework.SqlServer.dll

Примечание

Это использует тот факт, что установка собственных образов для поставщика EF для SQL Server также по умолчанию установит собственные образы для основной сборки среды выполнения EF. Это работает потому, что NGen.exe может обнаружить, что EntityFramework.dll является прямой зависимостью сборки EntityFramework.SqlServer.dll, расположенной в одном каталоге.

Создание собственных образов во время установки

Набор средств WiX поддерживает постановку в очередь собственных образов для управляемых сборок во время установки, как описано в этом практическом руководстве. Другой альтернативой является создание пользовательской задачи установки, которая выполняет команду NGen.exe.

Проверка использования собственных образов для EF

Чтобы убедиться, что конкретное приложение использует собственную сборку, найдите загруженные сборки с расширением «. ni.dll» или «.ni.exe». Например, образ в машинном коде для основной сборки среды выполнения EF будет вызываться EntityFramework.ni.dll. Простой способ проверить загруженные сборки .NET процесса — использовать обозреватель процессов.

Другие моменты, о которых следует знать

Создание собственного образа сборки не следует путать с регистрацией сборки в глобальном кэше сборок (глобальный кэш сборок).

NGen.exe позволяет создавать образы сборок, которые не находятся в GAC, и на самом деле несколько приложений, использующих определенную версию EF, могут совместно использовать один и тот же собственный образ. Хотя Windows 8 может автоматически создавать собственные образы для сборок, размещенных в глобальном кэше сборок, среда выполнения EF оптимизирована для развертывания вместе с приложением, и мы не рекомендуем зарегистрировать его в глобальном кэше сборок, так как это негативно влияет на разрешение сборок и обслуживание приложений среди других аспектов.

Microsoft .

NET Framework NGEN — что это за служба? (mscorsvw.exe)

Приветствую друзья! Сегодня у нас на разбор попала служба Microsoft .NET Framework NGEN. Моя задача — максимально узнать зачем она, насколько важна, может ее вообще можно безопасно отключить? Будем разбираться!


Разбираемся

Microsoft .NET Framework NGEN — служба, работающая под процессом mscorsvw.exe. Теоретически может ускорять работу программ, для которых необходима среда .NET Framework.

Информации в интернете мало. То что относится к .NET Framework — это и так понятно. Однако упоминание в названии NGEN — скорее всего не просто так..

Вообще NGEN расшифровывается вроде как Native Image Generator, вот инфа с вики:

Если вы точно уверены, что Windows у вас исправна, то можно разрешить службе выполнить свою работу, для этого используйте команду:

%WinDir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe update /force /queue

Если винда 64-бит добавьте в пути 64 к слову Framework. Пусть сделает то что ей нужно — грузить ПК может пару часов, если не остановится — делайте перезагрузку. Если остановится, и после этого снова иногда будет вызывать нагрузку — пробуйте исправить командой ниже либо отключайте ее вообще. Команду нашел на форуме — надеюсь работает.

У некоторых пользователей данная служба вызывала долгую загрузку винды, также тормоза были и после запуска. Тормоза могут быть связаны с сетью, происходит какой-то конфликт между службой и сетевыми процессами.. на форуме OSzone авторитетный юзер предложил выполнить команду в командой строке:

%WinDir%\Microsoft.NET\Framework\v4.0.30319\ngen.exe executeQueuedItems

Тут также, если винда 64-битная — добавьте 64 к слову Framework.

Судя по тому, сколько юзеров посчитало сообщение полезным — есть вероятность что команда поможет и вам.

При проблемах со службой, а также вообще с Фраемворком — можно воспользоваться офф инструментом Microsoft .NET Framework Repair Tool. Правда исправит ли ошибки — гарантии нет, но все таки его предлагает сама компания Майкрософт, поэтому можно и попробовать… вот офф ссылка, внешний вид программы:

Реально, при проблемах — стоит попробовать эту прогу.

У одного чела не запускался фаервол. И в этом была виновата служба NGEN. Как видим — реально может создавать разные проблемы((

Еще вроде как имеет свои задания в планировщике по этому адресу:

Библиотека планировщика заданий > Microsoft > Windows > .NET Framework

То что обведено красной рамкой — непонятно, вроде как критически важное задание что ли.. Да, их можно отключить, возможно после — грузить ПК уже не будут. Чтобы быстро открыть планировщик — зажмите Win + R, напишите команду taskschd.msc > OK.

Тип запуска

На офф форуме Майкрософт говорится — лучше чтобы служба имела тип запуска вручную:

Чтобы изменить тип запуска — два раза нажмите по службе, будет окошко свойств, и там будет меню Тип запуска — выберите Вручную.

Быстро открыть список служб можно так: зажимаете Win + R, пишите команду services.msc и нажимаете ОК.

Хотя один юзер написал — служба однократно грузит ПК, проводит там какую-то работу, и после этого уже тормозов не будет. Но.. увы.. кажется у многих это происходит далеко не однократно((

Можно ли отключать?

В принципе, как я понимаю — служба не основная. Она вроде как нужна именно для ускорения работы некоторых программ. Во-вторых отключение — действие, которое можно всегда исправить.

Поэтому не вижу причин чтобы не попробовать отключить. Внимание! На всякий случай перед отключением можно создать точку восстановления:

  1. Зажимаете Win + R, пишите команду sysdm.cpl, далее нажимаете ОК.
  2. Появится окошко, активируйте вкладку Защита системы.
  3. Выбираете системный диск. Нажимаете Создать. Если кнопка создать неактивна — нажимаете настроить и включаете защиту системы. Нажали создать > пишите название, советую назвать например До отключения NGEN.
  4. После создания точки уже можно службу отключать, а также при необходимости провести еще некоторые эксперименты, в случае проблем — при помощи точки вернетесь в прошлое))

РЕКЛАМА

Теоретически если процесс mscorsvw. exe грузит ПК — то отключение службы тоже может помочь..

Нашел полезную инфу:

Что это значит? Что после отключения некоторые приложения, написанные на платформе .NET — могут работать медленнее. Ничего критически опасного здесь нет, поэтому можно и обойтись без службы, учитывая что она способна создавать тормоза..

Вывод

Итак:

  1. Мы точно не смогли выяснить зачем нужна служба. Но предположительно — для ускорения работы программ, для которых нужна среда .NET Framework.
  2. Вероятно всего — можно отключить. При проблемах — включите обратно. Точка восстановления перед отключением не помешает.

Надеюсь информация помогла. Удачи и добра!

Запись опубликована автором 990x в рубрике Другое.

Mary Kay Sun Care — что это, как пользоваться?
Clear Proof Mary Kay — что это, как использовать? (система)
Ручная установка драйверов
DevID Agent — программа для обновления драйверов
Unlocker — удаление неудаляемых файлов/папок
Автозагрузка в AnVir Task Manager
Автозагрузка в CCleaner
Стандартное создание точки восстановления


Повышение производительности при запуске с помощью NGen — EF6

Редактировать

Твиттер LinkedIn Фейсбук Электронная почта

  • Статья
  • 4 минуты на чтение

Примечание

Только EF6 и более поздние версии — функции, API и т. д., обсуждаемые на этой странице, были введены в Entity Framework 6. Если вы используете более раннюю версию, часть или вся информация не применима.

.NET Framework поддерживает создание собственных образов для управляемых приложений и библиотек, чтобы ускорить запуск приложений и в некоторых случаях использовать меньше памяти. Собственные образы создаются путем преобразования сборок управляемого кода в файлы, содержащие собственные машинные инструкции, до выполнения приложения, что избавляет компилятор .NET JIT (Just-In-Time) от необходимости генерировать собственные инструкции во время выполнения приложения.

До версии 6 основные библиотеки среды выполнения EF были частью .NET Framework, и для них автоматически создавались собственные образы. Начиная с версии 6 вся среда выполнения EF была объединена в NuGet-пакет EntityFramework.

Теперь для получения аналогичных результатов необходимо создавать собственные образы с помощью инструмента командной строки NGen.exe.

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

Как использовать NGen.exe

Самая основная функция инструмента NGen.exe — «установить» (то есть создать и сохранить на диске) собственные образы для сборки и всех ее непосредственных зависимостей. Вот как это сделать:

  1. Откройте окно командной строки от имени администратора.

  2. Измените текущий рабочий каталог на расположение сборок, для которых вы хотите создать собственные образы:

     cd <*Расположение сборки*>
     
  3. В зависимости от вашей операционной системы и конфигурации приложения вам может потребоваться создать собственные образы для 32-битной архитектуры, 64-битной архитектуры или для обеих.

    Для 32-битной версии:

     %WINDIR%\Microsoft. NET\Framework\v4.0.30319\ngen install <имя сборки>
     

    Для 64-битной версии:

     %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install <имя сборки>
     

Совет

Генерация собственных образов для неправильной архитектуры является очень распространенной ошибкой. Если вы сомневаетесь, вы можете просто создать собственные образы для всех архитектур, применимых к операционной системе, установленной на машине.

NGen.exe также поддерживает другие функции, такие как удаление и отображение установленных собственных образов, постановка в очередь создания нескольких образов и т. д. Дополнительные сведения об использовании см. в документации по NGen.exe.

Когда использовать NGen.exe

Когда нужно решить, для каких сборок создавать собственные образы в приложении на основе EF версии 6 или более поздней, следует рассмотреть следующие варианты:

  • Основная сборка среды выполнения EF, EntityFramework.dll : типичный EF Приложение на основе этой сборки выполняет значительный объем кода при запуске или при первом доступе к базе данных. Следовательно, создание собственных образов этой сборки даст наибольший прирост производительности при запуске.
  • Любая сборка поставщика EF, используемая вашим приложением. : Время запуска также может немного выиграть от создания их собственных образов. Например, если приложение использует поставщика EF для SQL Server, вам потребуется создать собственный образ для EntityFramework.SqlServer.dll.
  • Сборки вашего приложения и другие зависимости : документация NGen.exe охватывает общие критерии выбора сборок для создания собственных образов и влияние собственных образов на безопасность, дополнительные параметры, такие как «жесткая привязка», такие сценарии, как использование собственного изображения в сценариях отладки и профилирования и т. д.

Совет

Убедитесь, что вы тщательно измерили влияние использования собственных образов как на производительность запуска, так и на общую производительность вашего приложения, и сравните их с фактическими требованиями. Хотя нативные образы обычно помогают повысить производительность при запуске и в некоторых случаях сократить использование памяти, не все сценарии получат одинаковое преимущество. Например, при стационарном выполнении (т. е. после того, как все методы, используемые приложением, были вызваны хотя бы один раз) код, сгенерированный JIT-компилятором, может на самом деле давать немного более высокую производительность, чем собственные изображения.

Использование NGen.exe на компьютере для разработки

Во время разработки компилятор .NET JIT предлагает наилучший общий компромисс для часто изменяющегося кода. Создание собственных образов для скомпилированных зависимостей, таких как сборки среды выполнения EF, может помочь ускорить разработку и тестирование, сократив несколько секунд в начале каждого выполнения.

Хорошее место для поиска сборок среды выполнения EF — расположение пакета NuGet для решения. Например, для приложения, использующего EF 6.0.2 с SQL Server и предназначенного для . NET 4.5 или более поздней версии, вы можете ввести в окне командной строки следующее (не забудьте открыть его от имени администратора):

 cd <каталог решения>\packages\EntityFramework.6.0.2\lib\net45
%WINDIR%\Microsoft.NET\Framework\v4.0.30319\ngen install EntityFramework.SqlServer.dll
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\ngen install EntityFramework.SqlServer.dll
 

Примечание

При этом используется тот факт, что при установке собственных образов для поставщика EF для SQL Server по умолчанию также устанавливаются собственные образы для основной сборки среды выполнения EF. Это работает, потому что NGen.exe может определить, что EntityFramework.dll является прямой зависимостью сборки EntityFramework.SqlServer.dll, расположенной в том же каталоге.

Создание собственных образов во время установки

Набор инструментов WiX поддерживает создание очереди создания собственных образов для управляемых сборок во время установки, как описано в этом практическом руководстве. Другой альтернативой является создание пользовательской задачи установки, которая выполняет команду NGen.exe.

Проверка того, что собственные образы используются для EF

Вы можете убедиться, что конкретное приложение использует собственную сборку, выполнив поиск загруженных сборок с расширением «.ni.dll» или «.ni.exe». Например, собственный образ для основной сборки среды выполнения EF будет называться EntityFramework.ni.dll. Простой способ проверить загруженные сборки .NET процесса — использовать Process Explorer.

Что еще нужно знать

Создание собственного образа сборки не следует путать с регистрацией сборки в GAC (глобальном кэше сборок) . NGen.exe позволяет создавать образы сборок, которых нет в GAC, и фактически несколько приложений, использующих определенную версию EF, могут использовать один и тот же собственный образ. Хотя Windows 8 может автоматически создавать собственные образы для сборок, помещенных в GAC, среда выполнения EF оптимизирована для развертывания вместе с вашим приложением, и мы не рекомендуем регистрировать ее в GAC, так как это негативно влияет на разрешение сборок и обслуживание ваших приложений среди другие аспекты.

Обратная связь

Просмотреть все отзывы о странице

Microsoft .NET Framework NGEN v2.0.50727 — Black Viper

Общая информация

В настоящее время нет

[имя вкладки = ‘Windows 7’]

Windows 7

Описание по умолчанию

NGEN 9 Microsoft .00 .NET Framework0126 Дополнительная информация

Две службы скрываются под двумя именами:

  • Microsoft .NET Framework NGEN v2.0.50727_X86 ~ для 32-битных систем.
  • Microsoft .NET Framework NGEN v2.0.50727_X64 ~ для 64-разрядных систем.

В 64-разрядных системах будут установлены оба.

Тип запуска по умолчанию

ОС СП0 СП1
Начальная версия Windows 7 Руководство Руководство
Windows 7 Домашняя базовая Руководство Руководство
Windows 7 Домашняя расширенная Руководство Руководство
Windows 7 Профессиональная Автоматический (отложенный запуск, запуск) Автоматический (отложенный запуск, запуск)
Windows 7 Максимальная Руководство Руководство
Windows 7 Корпоративная Автоматический (отложенный запуск, запуск) Автоматический (отложенный запуск, запуск)

Имена услуг

Имя службы (реестр): CLR_OPTIMIZE_V2. 0.50727_32 или CLR_OPTIMIZAT и параметры командной строки

C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorsvw.exe
или
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorsvw.exe

Войти как

Учетная запись: Локальная системная учетная запись

Зависимости

Какая служба Microsoft .NET Framework NGEN v2.0.50727 должна функционировать должным образом:

  • Нет (S, HB, HP, P, U, E)

Для правильной работы какой еще службы требуется Microsoft .NET Framework NGEN v2.0.50727:

  • Нет (S, HB, HP, P, U, E)

[/tab]

[tab name=’Windows Vista’]

Windows Vista

Описание по умолчанию

Microsoft .NET Framework NGEN

Дополнительная информация

Под двумя именами скрываются две службы:

  • Microsoft .NET Framework NGEN v2.0.50727_X86 ~ для 32-битных систем.
  • Microsoft .NET Framework NGEN v2.0.50727_X64 ~ для 64-разрядных систем.

В 64-разрядных системах будут установлены оба.

Если эта служба переведена в автоматический режим и запущена, она вернется в ручной режим.

Тип запуска по умолчанию

ОС СП0 СП1 СП2
Vista Home Basic Руководство Руководство Руководство
Виста Хоум Премиум Руководство Руководство Руководство
Виста Бизнес Руководство Руководство Руководство
Перспектива Максимальная Руководство Руководство Руководство
Vista Enterprise Руководство Руководство Руководство

Имена услуг

Имя службы (реестр): CLR_OPTIMIZE_V2.0.50727_32 или CLR_OPTIMIZAT и параметры командной строки

C:\Windows\Microsoft.