Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 3162|Відповідь: 1

[Зв'язок] Вступ і різниця між компіляцією JIT та AOT у .NET

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

CLI: Common Language Infrastructure — це специфікація в рамках .NET-фреймворку, яка визначає мовно-агностичний, міжархітектурний виконаний середовище. Отже, ми можемо розробляти програмне забезпечення різними високорівневими мовами згідно зі специфікацією без змін у різних комп'ютерних архітектурах

CLR: Runtime Common Language. — це специфікація, яка гарантує, що операційне середовище є незалежним від мови та міжархітектурним

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 Intermediate Language (MSIL) або Common Intermediate Language (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# High performance об'єднує кілька файлів в один файл
Наступний:.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