|
|
Опубліковано 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 для визначення, чи має елемент бенчмарк
|