Ngen

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

The Native Image Generator — утилита, позволяющая создавать из сборок на CIL-коде для виртуальной машины CLR образы в машинном коде (native image) и устанавливать его в кэш сборок локального компьютера. За счёт этого повышается эффективность управляемых приложений: вместо JIT-компиляции загружается готовая сборка на native коде.

Преимущества:

  • уменьшает время загрузки приложения так как JIT компиляции не требуется.
  • уменьшает время первого запуска функций так как JIT компиляции не требуется.
  • улучшает использование памяти так как JIT компилятор не требуется.
  • полученные dll могут одновременно использоваться многими процессами.(sharing between processes)
  • компиляция происходит под конкретный процессор, используемый в системе.

Недостатки:

  • Ограничения на использование метода Assembly.LoadFrom
  • Native image не заменяет исходные dll, а хранится отдельно. Поэтому используется больше дискового пространства.
  • Рассинхронизация NGen-файлов. При появлении новой версии сборки необходимо обновлять и образ в локальном кеше.
  • Так как native image и исходная сборка имеют разные адреса для функций, то при вызове методов находящихся в native image добавляется операция модификации базового адреса.

Применение:

  • Если dll используют много процессов или оно используется из разных доменов. Native image даст возможность одновременного использования библиотеки многими процессами.
  • Если необходимо ускорить запуск приложения и уменьшить используемую память.
  • Применение к большим программам дает больший эффект, чем применение к маленьким программам.
  • Для программ с длительным временем выполнения эффект очень маленький (так как JIT компиляция осуществляется только один раз — по первому обращению. Далее используется скомпилированная версия. И с каждым новым вызовом суммарная разница будет уменьшаться.)

Все .NET Framework при установке создают образы в Native image.

Литература[править | править вики-текст]

  1. Bart De Smet Native Image Generation // C# 4.0 Unleashed. — Pearson Education, 2011. — P. 115. — 1080 p. — ISBN 9780132681728.
  2. Jeffrey Richter The Native Code Generation Tool: NGen.exe // CLR via C#. — Pearson Education, 2012. — P. 35. — 894 p. — ISBN 9780735668768.

Ссылки[править | править вики-текст]

Native Image Generator at MSDN

См. также[править | править вики-текст]