3

Где-то краем уха я слышал, что .NET код можно компилировать не в MSIL(Microsoft Intermediate Language), а прямиком в бинарник. Вроде как только средствами Visual Studio(а не Mono).

  • Возможно ли это или Я ошибаюсь?
  • Компилировать в бинарник умеет только VS или Mono тоже?
  • Компиляция в машинный код дает выигрыш в производительности относительно компиляции в IL?
Буду рад получить ответ даже не один из поставленных вопросов.
P.S.: Сори, если нарушил правила портала, впихнув сюда сразу три вопроса.

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507
eterey
  • 2,813
  • 1
  • 21
  • 46

2 Answers2

3
  • Это возможно с помощью утилиты NGen.exe.
  • Маловероятно, что есть что-то подобное NGen.exe, для Lixux.
  • Компиляция дает выигрыш во времени загрузки, но не дает существенного выигрыша во время работы, так как все равно приложение работает на основе .NET и используется JIT.

Статья на MSDN: Компиляция MSIL в машинный код.

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507
3

Возможность предварительной компиляции в машинный код .Net сборок присутствует, для таких целей существует Ngen (подробнее на MSDN):

Генератор образов в машинном коде (Ngen.exe) — это средство повышения быстродействия управляемых приложений. Ngen.exe создает образы в машинном коде, представляющие собой файлы, содержащие компилированный специфический для процессора машинный код, и устанавливает их в кэш образов в машинном коде на локальном компьютере. Среда выполнения может использовать образы в машинном коде, находящиеся в кэше, вместо использования JIT-компилятора для компиляции исходной сборки.

Однако для выполнения необходимо присутствие установленного .Net фреймворка и самой сборки, для которой выполняется прекомпиляция.

AlexeyM
  • 1,988