Скачиваний:
15
Добавлен:
04.09.2023
Размер:
1.17 Mб
Скачать

Преимущества технологии динамической компиляции

• Относительная лёгкость освоения и работы с языками, так как большинство .Net языков – языки высшего уровня.

• Быстрота выполнения конечных исполняемых файлов.

• Исполняющая среда может собирать статистику о работающей программе и производить оптимизации с учётом этой информации.

• Исполняющая среда может контролировать выполнение байт-кода после компиляции, поэтому приложение может быть запущено в «песочнице»

• Приложения, написанные на .net сами чистят себя в оперативной памяти, благодаря автоматическому «сборщику мусора».

• Приложение нужно собрать всего один раз, и оно будет работать на всех платформах процессоров и операционных системах семейства Windows. При этом приложение будет показывать весь свой потенциал скорости, который возможен на определённых процессорах.

Песочница (sandbox) — специально выделенная (изолированная) среда для безопасного исполнения компьютерных программ. Обычно представляет собой жёстко контролируемый набор ресурсов для исполнения гостевой программы — например, место на диске или в памяти. Доступ к сети, возможность сообщаться с главной операционной системой или считывать информацию с устройств ввода обычно либо частично эмулируют, либо сильно ограничивают.

Сборка мусора (garbage collection) — одна из форм автоматического управления памятью. Специальный процесс, называемый сборщиком мусора (garbage collector), периодически освобождает память, удаляя объекты, которые уже не будут востребованы приложениями.

Common Intermediate Language (сокращённо CIL) — «высокоуровневый ассемблер» виртуальной машины .NET. Промежуточный язык, разработанный фирмой Microsoft для платформы .NET Framework.

Прежнее название MSIL (Microsoft Intermediate Language) JIT-компилятор CIL является частью CLR (common language runtime) — общей среды выполнения программ, написанных на языках .NET.

Все компиляторы, поддерживающие платформу .NET, должны транслировать код с языков высокого уровня платформы на язык CIL.

Общеязыковая исполняющая среда

Common Language Runtime (CLR — общеязыковая исполняющая среда) — исполняющая среда для байт-кода CIL, в который компилируются программы, написанные на .NET-совместимых языках программирования (C#, Managed C++, Visual Basic .NET, F# и прочие).

CLR компилирует код приложения на языке CIL во время его исполнения, а также предоставляет CIL-программам (а следовательно, и программам, написанным на языках высокого уровня, поддерживающих .NET Framework) доступ к библиотеке классов .NET Framework, (Framework Class Library).

JIT-компиляция (Just-In-Time compilation, компиляция «на лету»), динамическая компиляция — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код непосредственно во время работы программы.

Сборка .NET

Сборка в терминологии .NET ( assembly) — двоичный файл (exe или dll), содержащий номер версии информационного продукта, метаданные и инструкции для виртуальной машины .NET.

Файл с исходным кодом, написанном на любом языке поддерживаемой .NET платформой (C#, VB.NET...), с помощью соответствующего компилятора компилируется в сборку.

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

Метаданные типов - описывают все классы и члены классов, определённые в сборке, а также классы и члены классов, которые текущая сборка вызывает из другой сборки.

CIL-код (байт-код) – программный код на промежуточном языке.

Ресурсы - любые неисполняемые данные, которые логически развертываются вместе с приложением.

Код компилируется в приложения или сборки с расширениями exe или dll на языке CIL. Далее при запуске на выполнение подобного приложения происходит JIT-компиляция (Just-In-Time) в машинный код, который затем выполняется. При этом, поскольку наше приложение может быть большим и содержать кучу инструкций, в текущий момент времени будет компилироваться лишь та часть приложения, к которой непосредственно идет обращение. Если мы обратимся к другой части кода, то она будет скомпилирована из CIL в машинный код. При том уже скомпилированная часть приложения сохраняется до завершения работы программы. В итоге это повышает производительность.