Терминология
CLI: Общая языковая инфраструктура — это спецификация в рамках фреймворка .NET, определяющая языково-независимую, межархитектурную среду выполнения. Таким образом, мы можем разрабатывать программное обеспечение на различных высокоуровневых языках в рамках спецификации, которое может работать на разных архитектурах компьютеров без изменений
CLR: Runtime на общем языке. — это спецификация, которая гарантирует, что операционная среда является независимой от языка и кросс-архитектурной
CTS: Общая система типов
CLS: Спецификация общего языка
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler компилирует исходный код продвинутых языков в промежуточные языки.
JIT: Just In Time Compiler компилирует промежуточный язык в машинный код, который компьютер может понять, и который затем можно выполнить
Исходный код компилируется в IL с помощью компилятора C# (то есть программ, dll, exe и т.д.). CLR загружает эти IL, компилирует их в машинный код через JIT и в итоге выполняется, как показано на следующем рисунке:
JIT (компилятор Just-in-time) компилируется на лету
Компилятор just-in-time (JIT) является частью Common Language Runtime (CLR) в .NET и отвечает за управление . .NET-программу, независимо от любых . Язык программирования .NET. Языковые компиляторы преобразуют исходный код в промежуточные языки. Этот промежуточный язык затем преобразуется в машинный код с помощью компилятора just-in-time (JIT). Этот машинный код специфичен для среды компьютера, в которой работает компилятор JIT. Работа с JIT-компиляторами: JIT-компиляторы должны ускорять выполнение кода и обеспечивать поддержку нескольких платформ. Вот как это работает:
Компилятор JIT преобразует промежуточный язык Microsoft (MSIL) или общий промежуточный язык (CIL) в машинный код. Это делается перед выполнением MSIL или CIL. MSIL преобразуется в машинный код по мере необходимости, то есть JIT-компилятор компилирует MSIL или CIL по мере необходимости, а не компилирует весь код. Храните скомпилированный MSIL или CIL так, чтобы использовать его для последующих вызовов при необходимости.
Плюсы JIT:
- Его можно скомпилировать и генерировать в реальном времени в зависимости от текущей аппаратной ситуации
- Оптимальная последовательность машинных инструкций может быть сгенерирована в соответствии с текущей программной операцией
- Когда программе нужно поддерживать динамическое соединение, она может использовать только метод компиляции JIT
- Код можно корректировать в соответствии с реальной ситуацией памяти в процессе, чтобы лучше использовать её
Минусы JIT:
- Компиляция требует ресурсов времени выполнения, из-за чего процесс начинает тормозить при выполнении
- Компиляция занимает время выполнения, и некоторые оптимизации компиляции кода не могут быть полностью поддержаны, поэтому необходимо балансировать беглость и время
- Подготовка компиляции и идентификация часто используемых методов занимают много времени, и начальная компиляция не достигает высочайших результатов
AOT (Ahead-of-Time компилятор) компилируется заранее
В информатике ранняя компиляция (AOT-компиляция) — это процесс компиляции (обычно) высокоуровневого языка программирования в (обычно) низкоуровневый язык перед запуском программы, обычно во время сборки, чтобы сократить усилия, необходимые во время выполнения.
Чаще всего это не то же самое, что объединение высокоуровневых языков программирования (таких как C или C++) или промежуточных представлений, таких как байткод Java или . Код NET Framework Common Intermediate Language (CIL), скомпилированный для нативного (системного) поведения. машинный код, чтобы полученные бинарные файлы могли выполняться нативно, как стандартный нативный компилятор. В такой конкретной среде он часто воспринимается как полная противоположность компиляции just-in-time (JIT).
Компиляция AOT происходит до компиляции или установки программы, то есть предварительно компилирует скрипты или байткоды в машинный код и выполняет их напрямую при необходимости. Это может повысить скорость запуска программы и предотвратить задержки, вызванные процессом компиляции.
Плюсы AOT:
- Компиляция до запуска программы позволяет избежать производительности компиляции и использования памяти во время выполнения
- Максимальные результаты можно достичь на ранних этапах программы
- Он может значительно повысить эффективность выполнения программ
Минусы AOT:
- Компиляция до запуска программы увеличивает время установки программы
- Сохранение предварительно скомпилированного контента занимает больше памяти
- Жертвование согласованностью высокоуровневых языков
сводка
JIT: Высокая пропускная способность, бонус к производительности во время выполнения, может работать быстрее и динамически генерировать код и т.д., но запускается относительно медленно и требует определённого времени и частоты вызовов для запуска механизма слоёв JIT AOT: Низкое использование памяти, быстрая скорость запуска позволяют напрямую статически связать время выполнения с финальной программой без выполнения времена, но бонуса к производительности во время выполнения нет, и её нельзя дополнительно оптимизировать в зависимости от запуска программы
Ссылка:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
|