|
|
Публикувано в 15.02.2024 г. 17:17:46 ч.
|
|
|
|

Терминология
CLI: Common Language Infrastructure е спецификация под .NET рамката, която дефинира езиково-независима, междуархитектурна runtime. Затова можем да разработваме софтуер на различни високопоставени езици според спецификацията, който да работи в различни компютърни архитектури без модификации
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 Intermediate Language (MSIL) или Common Intermediate Language (CIL) в машинен код. Това се прави преди извършване на MSIL или CIL. MSIL се конвертира в машинен код при необходимост, т.е. JIT компилаторът компилира MSIL или CIL според нуждите, вместо да компилира целия код. Съхранявайте компилирания MSIL или CIL, за да може да се използва за следващи обаждания при нужда.
Плюсове на JIT:
- Може да се компилира и генерира в реално време според текущата хардуерна ситуация
- Оптималната машинна последователност на инструкциите може да бъде генерирана според текущата програмна операция
- Когато една програма трябва да поддържа динамично свързване, тя може да използва само метода на JIT компилация
- Кодът може да се коригира според реалната ситуация на паметта в процеса, за да се използва по-добре паметта
Недостатъци на JIT:
- Компилирането изисква ресурсите на runtime time, което причинява засичане на процеса при изпълнение
- Компилацията заема време за изпълнение, а някои оптимизации за компилация не могат да бъдат напълно поддържани, затова е необходимо да се балансира плавността и времето
- Подготовката на компилация и идентифицирането на често използвани методи отнемат време, а първоначалната компилация не постига най-висока производителност
AOT (Apre-of-Time компилатор) се компилира предварително
В компютърните науки ранната компилация (AOT компилация) е процесът на компилиране на (обикновено) високониво програмен език в (обикновено) ниско ниво преди изпълнение на програма, обикновено по време на изграждане, за да се намали необходимите усилия по време на изпълнение.
В повечето случаи това не е същото като комбинирането на високониво програмни езици (като C или C++) или междинни представяния като Java байткод или . NET Framework Common Intermediate Language (CIL) код), компилиран да бъде нативен (зависим от системата) поведенчески ориентиран. машинен код, така че получените двоични файлове могат да се изпълняват нативно, подобно на стандартен нативен компилатор. Когато се използва в тази конкретна среда, често се възприема като противоположност на компилацията точно навреме (JIT).
AOT компилацията се извършва преди програмата да бъде компилирана или инсталирана, тоест предварително компилира скриптове или байткодове в машинен код и ги изпълнява директно, когато е необходимо. Това може да подобри скоростта на стартиране на програмата и да избегне забавяния, причинени от процеса на компилация.
Плюсове на AOT:
- Компилирането преди стартиране на програмата избягва производителността на компилацията и консумацията на памет по време на изпълнение
- Върховото представяне може да бъде постигнато рано в програмата
- Това може значително да ускори ефективността на изпълнението на програмата
Недостатъци на AOT:
- Компилирането преди стартиране на програмата увеличава времето за инсталиране на програмата
- Запазването на предварително компилирано съдържание заема повече памет
- Жертване на последователността на високонивните езици
резюме
JIT: Висока пропускателна способност, бонус за производителност по време на изпълнение, може да работи по-бързо и може динамично да генерира код и др., но стартирането е сравнително бавно и изисква определено време и честота на повикванията, за да се задейства механизмът за наслояване на JIT. AOT: Ниската употреба на памет, бързата скорост на стартиране, могат директно да свържат периода на изпълнение статично с крайната програма без да се изпълнява, но няма бонус към производителността по време на изпълнение и не може да бъде допълнително оптимизиран според изпълнението на програмата
Препратка:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
|
Предишен:.NET/C# Висока производителност обединява множество файлове в един файлСледващ:.NET/C# колекция List, HashSet, за да определи дали даден елемент има бенчмарк
|