Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 3162|Atsakyti: 1

[Komunikatas] Įvadas ir skirtumas tarp JIT ir AOT kompiliavimo .NET

[Kopijuoti nuorodą]
Paskelbta 2024-02-15 17:17:46 | | | |
Terminologija

CLI: "Common Language Infrastructure" yra .NET sistemos specifikacija, apibrėžianti kalbos nepriklausomą, kelių architektūrų vykdymo laiką. Todėl pagal specifikaciją galime kurti programinę įrangą įvairiomis aukšto lygio kalbomis, kuri gali veikti skirtingose kompiuterių architektūrose be pakeitimų

CLR: bendrosios kalbos vykdymo laikas. yra specifikacija, užtikrinanti, kad operacinė aplinka būtų nepriklausoma nuo kalbos ir įvairių architektūrų

CTS: bendro tipo sistema

CLS: bendrosios kalbos specifikacija

FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class  Library 和成品类库

IL: Immediate Language Intermediate Language, Advanced Language Compiler kompiliuoja išplėstinių kalbų šaltinio kodą į tarpines kalbas.

JIT: Just In Time Compiler kompiliuoja tarpinę kalbą į kompiuterio suprantamą mašininį kodą, kurį vėliau galima vykdyti

Šaltinio kodą į IL kompiliuoja C# kompiliatorius (t.y. programos, dlls, exes ir kt.). CLR įkelia šiuos IL, kompiliuoja juos į mašininį kodą per JIT ir galiausiai vykdomas, kaip parodyta šiame paveikslėlyje:



JIT (Just-in-time kompiliatorius) yra sudarytas skristi

Kompiliatorius "just-in-time" (JIT) yra "Common Language Runtime" (CLR) dalis .NET ir yra atsakingas už . .NET programa, nepriklausomai nuo bet kokios . .NET programavimo kalba. Konkrečios kalbos kompiliatoriai konvertuoja šaltinio kodą į tarpines kalbas. Tada šią tarpinę kalbą į mašininį kodą konvertuoja "just-in-time" (JIT) kompiliatorius. Šis mašinos kodas yra būdingas kompiuterio aplinkai, kurioje veikia JIT kompiliatorius.  JIT kompiliatoriaus darbas: JIT kompiliatoriai turi pagreitinti kodo vykdymą ir palaikyti kelias platformas. Štai kaip tai veikia:



JIT kompiliatorius konvertuoja Microsoft Intermediate Language (MSIL) arba Common Intermediate Language (CIL) į mašinos kodą. Tai daroma prieš atliekant MSIL arba CIL. MSIL konvertuojamas į mašininį kodą pagal poreikį, ty JIT kompiliatorius kompiliuoja MSIL arba CIL pagal poreikį, o ne kompiliuoja visą kodą. Išsaugokite sukompiliuotą MSIL arba CIL, kad prireikus jį būtų galima naudoti vėlesniems iškvietimams.

JIT privalumai:

  • Jis gali būti kompiliuojamas ir generuojamas realiuoju laiku, atsižvelgiant į esamą aparatinės įrangos situaciją
  • Optimali mašinos instrukcijų seka gali būti sugeneruota pagal dabartinę programos operaciją
  • Kai programai reikia palaikyti dinaminį susiejimą, ji gali naudoti tik JIT kompiliavimo metodą
  • Kodą galima koreguoti atsižvelgiant į faktinę atminties situaciją, kad būtų galima geriau išnaudoti atmintį


JIT trūkumai:

  • Kompiliavimui reikalingi vykdymo laiko ištekliai, todėl vykdant procesas mikčioja
  • Kompiliavimas užima laiką, o kai kurių kodo kompiliavimo optimizavimų negalima visiškai palaikyti, todėl būtina subalansuoti sklandumą ir laiką
  • Kompiliacijos parengimas ir dažnai naudojamų metodų identifikavimas užima daug laiko, o pradinis kompiliavimas nepasiekia aukščiausio našumo


AOT (Ahead-of-time kompiliatorius) sudaromas iš anksto

Informatikoje ankstyvasis kompiliavimas (AOT kompiliavimas) yra (paprastai) aukšto lygio programavimo kalbos kompiliavimas į (paprastai) žemo lygio kalbą prieš vykdant programą, paprastai kūrimo metu, siekiant sumažinti pastangas, kurias reikia atlikti vykdymo metu.

Dažniausiai tai nėra tas pats, kas derinti aukšto lygio programavimo kalbas (pvz., C arba C++) arba tarpines reprezentacijas, tokias kaip Java baitų kodas arba . NET Framework Common Intermediate Language (CIL) kodas), sukompiliuotas taip, kad būtų susijęs su vietiniu (nuo sistemos priklausančiu) elgesiu. mašininį kodą, kad gautus dvejetainius failus būtų galima vykdyti savaime, kaip ir standartinį vietinį kompiliatorių. Kai naudojamas šioje konkrečioje aplinkoje, jis dažnai laikomas "just-in-time" (JIT) kompiliavimo priešingybe.

AOT kompiliavimas vyksta prieš kompiliuojant ar įdiegiant programą, tai yra, ji iš anksto kompiliuoja scenarijus arba baitų kodus į mašinos kodą ir prireikus juos vykdo tiesiogiai. Tai gali pagerinti programos paleidimo greitį ir išvengti vėlavimų, kuriuos sukelia kompiliavimo procesas.

AOT privalumai:

  • Kompiliuojant prieš paleidžiant programą išvengiama kompiliavimo našumo ir atminties sunaudojimo vykdymo metu
  • Didžiausią našumą galima pasiekti programos pradžioje
  • Tai gali žymiai pagreitinti programos vykdymo efektyvumą


AOT trūkumai:

  • Kompiliuojant prieš paleidžiant programą pailgėja programos diegimo laikas
  • Iš anksto sukompiliuoto turinio išsaugojimas užima daugiau atminties
  • Aukšto lygio kalbų nuoseklumo aukojimas


suvestinė

JIT: Didelis pralaidumas, vykdymo laiko našumo premija, gali veikti greičiau ir gali dinamiškai generuoti kodą ir kt., tačiau jis yra gana lėtas ir reikalauja tam tikro laiko ir skambučių dažnio, kad suaktyvintų JIT sluoksniavimo mechanizmą
AOT: Mažas atminties naudojimas, greitas paleidimo greitis, gali tiesiogiai susieti vykdymo laiką statiškai su galutine programa be vykdymo laiko, tačiau nėra vykdymo laiko našumo premijos ir jos negalima toliau optimizuoti pagal programos veikimą



Nuoroda:

Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.
Hipersaito prisijungimas matomas.





Ankstesnis:.NET/C# didelis našumas sujungia kelis failus į vieną failą
Kitą:.NET/C# rinkinio sąrašas, HashSet, siekiant nustatyti, ar elementas turi etaloną
 Savininkas| Paskelbta 2024-03-10 10:58:59 |
.NET/C# Roslyn kompiliatoriaus platforma
https://www.itsvse.com/thread-10740-1-1.html
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com