Terminologie
CLI: Common Language Infrastructure este o specificație sub cadrul .NET care definește un runtime de rulare independent de limbaj, cross-architecture. Prin urmare, putem dezvolta software în diverse limbaje de nivel înalt sub specificație, care poate rula în diferite arhitecturi de calculatoare fără modificări
CLR: Runtime Common Language. este o specificație care asigură că mediul de operare este independent de limbaj și cross-arhitectural
CTS: Sistemul comun de tipuri
CLS: Specificația Limbajului Comun
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Limbaj Imediat Limbaj Intermediar, Advanced Language Compiler compilează codul sursă al limbajelor avansate în limbaje intermediare.
JIT: Just In Time Compiler compilează un limbaj intermediar în cod mașină pe care un calculator îl poate înțelege, care apoi poate fi executat
Codul sursă este compilat în IL de către compilatorul C# (adică programe, dll-uri, ex-uri etc.). CLR încarcă aceste IL-uri, le compilează în cod mașină prin JIT și este în cele din urmă executat, așa cum se arată în figura următoare:
JIT (compilatorul Just-in-time) este compilat în timp real
Compilatorul just-in-time (JIT) face parte din Common Language Runtime (CLR) din .NET și este responsabil pentru gestionarea . .NET, indiferent de orice program . limbaj de programare .NET. Compilatoarele specifice limbajului convertesc codul sursă în limbaje intermediare. Acest limbaj intermediar este apoi convertit în cod mașină de un compilator just-in-time (JIT). Acest cod mașină este specific mediului de calcul în care rulează compilatorul JIT. Lucru de compilator JIT: Compilatoarele JIT trebuie să accelereze execuția codului și să ofere suport pentru mai multe platforme. Iată cum funcționează:
Compilatorul JIT convertește Microsoft Intermediate Language (MSIL) sau Common Intermediate Language (CIL) în cod mașină. Acest lucru se face înainte de a efectua MSIL sau CIL. MSIL este convertit în cod mașină după necesitate, adică compilatorul JIT compilează MSIL sau CIL după necesitate, în loc să compile întregul cod. Stochează MSIL-ul sau CIL-ul compilat astfel încât să poată fi folosit pentru apeluri ulterioare, dacă este necesar.
Avantaje JIT:
- Poate fi compilat și generat în timp real, în funcție de situația hardware actuală
- Secvența optimă de instrucțiuni a mașinii poate fi generată în funcție de operația curentă a programului
- Când un program trebuie să suporte legarea dinamică, poate folosi doar metoda de compilare JIT
- Codul poate fi ajustat în funcție de situația reală a memoriei în proces pentru a folosi mai bine memoria
Dezavantaje JIT:
- Compilarea necesită resursele runtime-ului, ceea ce face ca procesul să se bâlbâie la executare
- Compilarea consumă timp de rulare, iar unele optimizări pentru compilarea codului nu pot fi complet suportate, așa că este necesar să se echilibreze fluența cu timpul
- Pregătirea compilației și identificarea metodelor frecvent utilizate sunt consumatoare de timp, iar compilarea inițială nu atinge performanța maximă
AOT (Ahead-of-time compiler) este compilat în avans
În informatică, compilarea timpurie (compilarea AOT) este actul de a compila un limbaj de programare (de obicei) de nivel înalt într-un limbaj (de obicei) de nivel scăzut înainte de a executa un program, de obicei la timpul construcției, pentru a reduce efortul necesar la rulare.
De cele mai multe ori, nu este același lucru cu a combina limbaje de programare de nivel înalt (precum C sau C++) sau reprezentări intermediare precum codul bytecode Java sau . NET Framework Common Intermediate Language (CIL) compilat pentru a fi nativ (dependent de sistem) legat de comportament. cod mașină astfel încât binarele rezultate să poată fi executate nativ, la fel ca un compilator nativ standard. Când este folosit în acest mediu specific, este adesea văzut ca opusul compilației just-in-time (JIT).
Compilarea AOT are loc înainte ca programul să fie compilat sau instalat, adică precompilează scripturi sau bytecodes în cod mașină și le execută direct când este necesar. Acest lucru poate îmbunătăți viteza de pornire a programului și poate evita întârzierile cauzate de procesul de compilare.
Avantaje AOT:
- Compilarea înainte ca programul să ruleze evită performanța compilației și consumul de memorie la rulare
- Performanța maximă poate fi atinsă devreme în program
- Poate accelera semnificativ eficiența execuției programului
Dezavantaje AOT:
- Compilarea înainte ca programul să ruleze crește timpul necesar pentru instalarea programului
- Salvarea conținutului precompilat consumă mai multă memorie
- Sacrificarea consistenței limbajelor de nivel înalt
rezumat
JIT: Debit ridicat, bonus de performanță la rulare, poate rula mai rapid și poate genera cod dinamic etc., dar este relativ lent la pornire și necesită un anumit timp și o anumită frecvență a apelurilor pentru a declanșa mecanismul de stratificare JIT AOT: Consum redus de memorie, viteză de pornire rapidă, pot lega direct timpul de execuție static de programul final fără runtime, dar nu există un bonus de performanță la runtime și nu poate fi optimizat suplimentar în funcție de rularea programului
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
|