Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 3162|Odpověď: 1

[Komunikace] Úvod a rozdíl mezi kompilací JIT a AOT v .NET

[Kopírovat odkaz]
Zveřejněno 15.02.2024 17:17:46 | | | |
Terminologie

CLI: Common Language Infrastructure je specifikace v rámci .NET frameworku, která definuje jazykově nezávislý runtime napříč architekturami. Díky tomu můžeme vyvíjet software v různých vyšších jazycích podle specifikace, který může běžet v různých počítačových architekturách bez úprav

CLR: Common Language Runtime. je specifikace, která zajišťuje, že operační prostředí je jazykově nezávislé a meziarchitektonické

CTS: Společný typový systém

CLS: Specifikace společ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 jazyků do mezilehlých jazyků.

JIT: Just In Time Compiler kompiluje mezijazyk do strojového kódu, kterému počítač rozumí, a který pak může být vykonán

Zdrojový kód je kompilován do IL pomocí C# Compileru (tj. programy, dll, exe soubory atd.). CLR tyto ILy načítá, překompiluje je do strojového kódu pomocí JIT a nakonec je vykonává, jak je znázorněno na následujícím obrázku:



JIT (Just-in-time compiler) se kompiluje za běhu

Just-in-time kompilátor (JIT) je součástí běžného prostředí Common Language (CLR) v .NET a je zodpovědný za správu . .NET program, bez ohledu na jakékoli . .NET programovací jazyk. Překladače specifické pro jazyk převádějí zdrojový kód do mezijazyků. Tento mezilehlý jazyk je poté převeden do strojového kódu pomocí just-in-time (JIT) kompilátoru. Tento strojový kód je specifický pro počítačové prostředí, ve kterém JIT kompilátor běží.  Práce s JIT kompilátory: Kompilátory JIT musí urychlit spuštění kódu a poskytovat podporu pro více platforem. Takto to funguje:



Kompilátor JIT převádí Microsoft Intermediate Language (MSIL) nebo Common Intermediate Language (CIL) do strojového kódu. Toto se provádí před provedením MSIL nebo CIL. MSIL je podle potřeby převáděn do strojového kódu, tj. JIT kompilátor kompiluje MSIL nebo CIL podle potřeby, místo aby kompiloval celý kód. Uložit zkompilovaný MSIL nebo CIL, aby mohl být použit pro další volání, pokud bude potřeba.

Výhody JIT:

  • Lze jej zkompilovat a generovat v reálném čase podle aktuální hardwarové situace
  • Optimální sekvence strojových instrukcí může být generována podle aktuálního provozu programu
  • Když program potřebuje podporovat dynamické linkování, může použít pouze metodu kompilace JIT
  • Kód lze upravovat podle aktuální situace v paměti v procesu, aby se paměť lépe využila


Nevýhody JIT:

  • Kompilace vyžaduje zdroje runtime runtime, což způsobuje trhání procesu při provádění
  • Kompilace zabírá čas běhu a některé optimalizace kompilace kódu nelze plně podporovat, proto je nutné vyvážit plynulost a čas
  • Příprava kompilace a identifikace často používaných metod je časově náročná a počáteční kompilace nedosahuje nejvyššího výkonu


AOT (Ahead-of-time compiler) se kompiluje předem

V informatice je raná kompilace (AOT kompilace) akt kompilace (obvykle) vysokoúrovňového programovacího jazyka do (obvykle) nízkoúrovňového jazyka před spuštěním programu, obvykle při sestavování, aby se snížila náročnost za běhu.

Většinou to není totéž jako kombinace vysokoúrovňových programovacích jazyků (například C nebo C++) nebo mezilehlých reprezentací, jako je Java bytecode nebo . NET Framework Common Intermediate Language (CIL) kód) byl zkompilován tak, aby byl nativně (na systému závislý) a chování. strojový kód, aby výsledné binární soubory mohly být vykonávány nativně, stejně jako standardní nativní překladač. Při použití v tomto konkrétním prostředí je často považována za opak just-in-time (JIT) kompilace.

Kompilace AOT probíhá před kompilací nebo instalací programu, tedy předkompilací skriptů nebo bajtkódů do strojového kódu a vykonává je přímo, když je potřeba. To může zlepšit rychlost spuštění programu a vyhnout se zpožděním způsobeným procesem kompilace.

Výhody AOT:

  • Kompilace před spuštěním programu zabraňuje výkonu kompilace a spotřebě paměti za běhu
  • Vrcholný výkon lze dosáhnout již na začátku programu
  • Může výrazně urychlit efektivitu provádění programů


Nevýhody AOT:

  • Kompilace před spuštěním programu prodlužuje dobu potřebnou k instalaci programu
  • Ukládání předkompilovaného obsahu zabírá více paměti
  • Obětování konzistence jazyků vysoké úrovně


shrnutí

JIT: Vysoká propustnost, bonus k výkonu za běhu, může běžet rychleji a dynamicky generovat kód atd., ale je relativně pomalý na spuštění a vyžaduje určitý čas a frekvenci hovorů k spuštění mechanismu vrstvení JIT
AOT: Nízké využití paměti, rychlá rychlost startu, umožňuje přímo staticky propojit runtime s finálním programem bez runtime, ale není zde žádný bonus za výkon běhu a nelze ho dále optimalizovat podle běhu programu



Odkaz:

Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.





Předchozí:.NET/C# Vysoce výkonný spoj více souborů do jednoho souboru
Další:.NET/C# kolekce Seznam, HashSet pro určení, zda má prvek benchmark
 Pronajímatel| Zveřejněno 10.03.2024 10:58:59 |
.NET/C# Roslyn kompilátorová platforma
https://www.itsvse.com/thread-10740-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com