|
|
Zverejnené 15. 2. 2024 17:17:46
|
|
|
|

Terminológia
CLI: Common Language Infrastructure je špecifikácia v rámci .NET frameworku, ktorá definuje jazykovo nezávislé runtime naprieč architektúrami. Preto môžeme vyvíjať softvér v rôznych vysokoúrovňových jazykoch podľa špecifikácie, ktorý môže bežať v rôznych počítačových architektúrach bez úprav
CLR: Common Language Runtime. je špecifikácia, ktorá zabezpečuje, že operačné prostredie je jazykovo nezávislé a medziarchitektonické
CTS: Spoločný typový systém
CLS: Špecifikácia spoločného jazyka
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompiluje zdrojový kód pokročilých jazykov do stredne pokročilých jazykov.
JIT: Just In Time Compiler kompiluje medzijazyk do strojového kódu, ktorému počítač rozumie, a ktorý sa potom môže spustiť
Zdrojový kód sa kompiluje do IL pomocou C# kompilátora (t. j. programy, dll, exe súbory a pod.). CLR načíta tieto IL, skompiluje ich do strojového kódu pomocou JIT a nakoniec sa spustí, ako je znázornené na nasledujúcom obrázku:
JIT (just-in-time kompilátor) sa kompiluje za behu
Just-in-time kompilátor (JIT) je súčasťou Common Language Runtime (CLR) v .NET a zodpovedá za správu . .NET program, bez ohľadu na akékoľvek . Programovací jazyk .NET. Jazykovo špecifické kompilátory konvertujú zdrojový kód do medzijazykov. Tento medzijazyk je potom prevedený do strojového kódu pomocou just-in-time (JIT) kompilátora. Tento strojový kód je špecifický pre počítačové prostredie, v ktorom JIT kompilátor beží. Práca s JIT kompilátormi: JIT kompilátory musia zrýchliť vykonávanie kódu a poskytovať podporu pre viacero platforiem. Takto to funguje:
Kompilátor JIT konvertuje Microsoft Intermediate Language (MSIL) alebo Common Intermediate Language (CIL) do strojového kódu. Toto sa vykonáva pred vykonaním MSIL alebo CIL. MSIL sa konvertuje do strojového kódu podľa potreby, t. j. JIT kompilátor kompiluje MSIL alebo CIL podľa potreby, namiesto kompilácie celého kódu. Ukladajte skompilovaný MSIL alebo CIL, aby mohol byť použitý pri ďalších volaniach, ak bude potrebný.
Výhody JIT:
- Môže byť skompilovaný a generovaný v reálnom čase podľa aktuálnej hardvérovej situácie
- Optimálna sekvencia strojových inštrukcií môže byť generovaná podľa aktuálnej prevádzky programu
- Keď program potrebuje podporovať dynamické prepojenie, môže použiť iba metódu kompilácie JIT
- Kód je možné upraviť podľa aktuálnej situácie pamäte v procese, aby sa pamäť lepšie využila
Nevýhody JIT:
- Kompilácia vyžaduje zdroje runtime runtime, čo spôsobuje trhanie procesu pri vykonávaní
- Kompilácia zaberá bežný čas a niektoré optimalizácie kompilácie kódu nie je možné plne podporiť, preto je potrebné vyvážiť plynulosť a čas
- Príprava kompilácie a identifikácia často používaných metód je časovo náročná a počiatočná kompilácia nedosahuje najvyšší výkon
AOT (Ahead-of-time kompilátor) sa kompiluje vopred
V informatike je skorá kompilácia (AOT kompilácia) akt kompilácie (zvyčajne) vysokoúrovňového programovacieho jazyka do (zvyčajne) nízkoúrovňového jazyka pred spustením programu, zvyčajne počas zostavovania, aby sa znížila náročnosť potrebná na beh.
Väčšinou to nie je to to isté ako kombinácia vysokoúrovňových programovacích jazykov (ako C alebo C++) alebo medzistupňových reprezentácií, ako je Java bajtkód alebo . NET Framework Common Intermediate Language (CIL) kód) skompilovaný tak, aby bol natívne (systémovo závislý) súvisiaci so správaním. strojový kód, aby výsledné binárky mohli byť vykonávané natívne, rovnako ako štandardný natívny kompilátor. Pri použití v tomto špecifickom prostredí sa často považuje za opak just-in-time (JIT) kompilácie.
Kompilácia AOT prebieha ešte pred kompiláciou alebo inštaláciou programu, teda predkompiluje skripty alebo bajtkódy do strojového kódu a vykoná ich priamo, keď je to potrebné. To môže zlepšiť rýchlosť štartu programu a vyhnúť sa oneskoreniam spôsobeným procesom kompilácie.
Výhody AOT:
- Kompilácia pred spustením programu zabraňuje výkonu kompilácie a spotrebe pamäte počas behu
- Maximálny výkon je možné dosiahnuť už na začiatku programu
- Môže výrazne zrýchliť efektivitu vykonávania programov
Nevýhody AOT:
- Kompilácia pred spustením programu predlžuje čas potrebný na inštaláciu programu
- Ukladanie predkompilovaného obsahu zaberá viac pamäte
- Obetovanie konzistencie vysokoúrovňových jazykov
súhrn
JIT: Vysoká priepustnosť, bonus k výkonu za behu, môže bežať rýchlejšie a dynamicky generovať kód atď., ale je relatívne pomalý na spustenie a vyžaduje určitý čas a frekvenciu volaní na spustenie mechanizmu vrstvenia JIT AOT: Nízke využitie pamäte, rýchla rýchlosť štartu, umožňuje priamo staticky prepojiť runtime s finálnym programom bez runtime, ale nie je tam žiadny bonus k výkonnosti za behu a nie je možné to ďalej optimalizovať podľa behu programu
Referencia:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
|
Predchádzajúci:.NET/C# Vysoký výkon spája viacero súborov do jedného súboruBudúci:.NET/C# kolekcia Zoznam, HashSet na určenie, či má prvok benchmark
|