Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 3162|Ответ: 1

[Связь] Введение и различия между компиляцией JIT и AOT в .NET

[Скопировать ссылку]
Опубликовано 15.02.2024 17:17:46 | | | |
Терминология

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: Низкое использование памяти, быстрая скорость запуска позволяют напрямую статически связать время выполнения с финальной программой без выполнения времена, но бонуса к производительности во время выполнения нет, и её нельзя дополнительно оптимизировать в зависимости от запуска программы



Ссылка:

Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.





Предыдущий:.NET/C# Высокая производительность объединяет несколько файлов в один файл
Следующий:.NET/C# collection List, HashSet для определения наличия элемента бенчмарка
 Хозяин| Опубликовано 10.03.2024 10:58:59 |
.NET/C# Платформа компиляторов Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com