Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

dotNet компиляция в бинарник

#net


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

Возможно ли это или Я ошибаюсь?
Компилировать в бинарник умеет только VS или Mono тоже?
Компиляция в машинный код дает выигрыш в производительности относительно компиляции в IL?

Буду рад получить ответ даже не один из поставленных вопросов.
P.S.: Сори, если нарушил правила портала, впихнув сюда сразу три вопроса.    


Ответы

Ответ 1



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

Ответ 2



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

Комментариев нет:

Отправить комментарий