|
|
Objavljeno na 15. 02. 2024 17:17:46
|
|
|
|

Terminologija
CLI: Common Language Infrastructure je specifikacija v okviru .NET ogrodja, ki določa jezikovno neodvisen in medarhitekturni runtime. Zato lahko razvijamo programsko opremo v različnih visokonivojskih jezikih po specifikaciji, ki lahko teče v različnih računalniških arhitekturah brez sprememb
CLR: Izvajanje skupnega jezika. je specifikacija, ki zagotavlja, da je operacijsko okolje jezikovno neodvisno in medarhitekturno
CTS: Skupni tipni sistem
CLS: Specifikacija skupnega jezika
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler prevaja izvorno kodo naprednih jezikov v vmesne jezike.
JIT: Just In Time Compiler prevede vmesni jezik v strojno kodo, ki jo računalnik razume, nato pa jo lahko izvede
Izvorna koda se v IL prevede s C# prevajalnikom (npr. programi, dll-ji, exe datoteke itd.). CLR naloži te IL-e, jih prevede v strojno kodo preko JIT in se končno izvede, kot je prikazano na naslednji sliki:
JIT (Just-in-time prevajalnik) se prevaja sproti
Prevajalnik just-in-time (JIT) je del Common Language Runtime (CLR) v .NET in je odgovoren za upravljanje . .NET program, ne glede na katerikoli . .NET programski jezik. Jezikovno specifični prevajalniki pretvarjajo izvorno kodo v vmesne jezike. Ta vmesni jezik se nato pretvori v strojno kodo s prevajalnikom just-in-time (JIT). Ta strojna koda je specifična za računalniško okolje, v katerem teče prevajalnik JIT. Delo JIT prevajalnikov: JIT prevajalniki morajo pospešiti izvajanje kode in zagotoviti podporo za več platform. Tako deluje:
JIT prevajalnik pretvori Microsoft Intermediate Language (MSIL) ali Common Intermediate Language (CIL) v strojno kodo. To se opravi pred izvajanjem MSIL ali CIL. MSIL se po potrebi pretvori v strojno kodo, torej JIT prevajalnik prevaja MSIL ali CIL po potrebi, namesto da bi prevajal celotno kodo. Shranjujte prevedeni MSIL ali CIL, da ga lahko uporabite za nadaljnje klice, če je potrebno.
Prednosti JIT:
- Lahko se prevede in generira v realnem času glede na trenutno strojno situacijo
- Optimalno zaporedje strojnih ukazov je mogoče generirati glede na trenutno delovanje programa
- Ko program potrebuje podporo dinamičnemu povezovanju, lahko uporablja le metodo prevajanja JIT
- Kodo je mogoče prilagoditi glede na dejansko stanje pomnilnika v procesu, da se pomnilnik bolje izkoristi
Slabosti JIT:
- Prevajanje zahteva vire v času izvajanja, kar povzroči zatikanje procesa med izvajanjem
- Prevajanje vzame čas izvajanja, nekatere optimizacije prevajanja kode pa niso v celoti podprte, zato je potrebno uravnotežiti tekočnost in čas
- Priprava prevajanja in identifikacija pogosto uporabljenih metod je časovno zahtevna, začetna prevajanja pa ne dosežejo najvišje zmogljivosti
AOT (Ahead-of-time prevajalnik) se prevede vnaprej
V računalništvu je zgodnje prevajanje (AOT prevajanje) dejanje prevajanja (običajno) visokonivojskega programskega jezika v (ponavadi) nizkonivojski jezik pred izvajanjem programa, običajno med gradnjo, da se zmanjša količina truda, ki ga je treba opraviti med izvajanjem.
Večinoma to ni enako kot združevanje visokonivojskih programskih jezikov (kot sta C ali C++) ali vmesnih predstavitev, kot sta Java bajtkoda ali . NET Framework Common Intermediate Language (CIL) koda), prevedena tako, da je nativna (sistemsko odvisna) povezana z vedenjem. strojna koda, tako da se lahko nastale binarne datoteke izvajajo nativno, podobno kot standardni nativni prevajalnik. Ko se uporablja v tem specifičnem okolju, ga pogosto vidimo kot nasprotje prevajanja po principu just-in-time (JIT).
Prevajanje AOT poteka pred prevajanjem ali namestitvijo programa, torej predhodno prevaja skripte ali bajtkode v strojno kodo in jih izvaja neposredno, kadar je to potrebno. To lahko izboljša hitrost zagona programa in prepreči zamude, ki jih povzroča proces prevajanja.
Prednosti AOT:
- Prevajanje pred zagonom programa preprečuje zmogljivost prevajanja in porabo pomnilnika med izvajanjem
- Vrhunsko uspešnost je mogoče doseči že zgodaj v programu
- Lahko bistveno pospeši učinkovitost izvajanja programov
Slabosti AOT:
- Prevajanje pred zagonom programa poveča čas namestitve programa
- Shranjevanje predkompilirane vsebine porabi več pomnilnika
- Žrtvovanje doslednosti visokonivojskih jezikov
Povzetek
JIT: Visoka prepustnost, bonus zmogljivosti med izvajanjem, lahko teče hitreje in dinamično generira kodo itd., vendar je zagon razmeroma počasen in zahteva določeno količino časa ter frekvenco klicev za sprožitev mehanizma plasti JIT AOT: Nizka poraba pomnilnika, hitra zagonska hitrost, omogoča neposredno povezavo izvajanja statično s končnim programom brez časa izvajanja, vendar ni bonusa za zmogljivost med izvajanjem in ni mogoče dodatno optimizirati glede na potek programa
Referenčni:
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
Prijava do hiperpovezave je vidna.
|
Prejšnji:.NET/C# Visokozmogljiva združi več datotek v eno datotekoNaslednji:.NET/C# seznam zbirke, HashSet za ugotavljanje, ali ima element referenčno vrednost
|