|
|
Publicerad på 2024-02-15 17:17:46
|
|
|
|

Terminologi
CLI: Common Language Infrastructure är en specifikation under .NET-ramverket som definierar en språk-agnostisk, tvärarkitektur-runtime. Därför kan vi utveckla mjukvara i olika högnivåspråk enligt specifikationen som kan köras i olika datorarkitekturer utan modifiering
CLR: Common Language Runtime. är en specifikation som säkerställer att driftmiljön är språkoberoende och korsarkitektur
CTS: Vanligt typsystem
CLS: Common Language Specification
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompilerar källkoden från avancerade språk till mellanliggande språk.
JIT: Just In Time Compiler kompilerar ett mellanliggande språk till maskinkod som en dator kan förstå, vilken sedan kan köras
Källkoden kompileras till IL av C# Compiler (dvs. program, dll:ar, ex-filer osv.). CLR laddar dessa IL:er, kompilerar dem till maskinkod via JIT och körs slutligen, som visas i följande figur:
JIT (Just-in-time-kompilator) kompileras i realtid
Just-in-time-kompilatorn (JIT) är en del av Common Language Runtime (CLR) i .NET och ansvarar för att hantera . .NET-program, oavsett något . .NET programmeringsspråk. Språkspecifika kompilatorer konverterar källkod till mellanliggande språk. Detta mellanliggande språk omvandlas sedan till maskinkod av en just-in-time (JIT) kompilator. Denna maskinkod är specifik för den datormiljö där JIT-kompilatorn körs. JIT-kompilatorarbete: JIT-kompilatorer behöver snabba upp kodexekveringen och erbjuda stöd för flera plattformar. Så här fungerar det:
JIT-kompilatorn konverterar Microsoft Intermediate Language (MSIL) eller Common Intermediate Language (CIL) till maskinkod. Detta görs innan MSIL eller CIL utförs. MSIL konverteras till maskinkod vid behov, dvs. JIT-kompilatorn kompilerar MSIL eller CIL vid behov, istället för att kompilera hela koden. Spara den kompilerade MSIL eller CIL så att den kan användas för efterföljande samtal vid behov.
JIT-fördelar:
- Den kan kompileras och genereras i realtid enligt den aktuella hårdvarusituationen
- Den optimala maskininstruktionssekvensen kan genereras enligt den aktuella programoperationen
- När ett program behöver stödja dynamisk länkning kan det endast använda JIT-kompileringsmetoden
- Koden kan justeras efter den faktiska minnessituationen i processen för att bättre utnyttja minnet
JIT-nackdelar:
- Kompiperingen kräver resurserna från runtime-runtimen, vilket gör att processen hackar vid exekvering
- Kompilering tar upp körtid, och vissa kodkompileringsoptimeringar kan inte stödjas fullt ut, så det är nödvändigt att balansera flyt och tid
- Förberedelse av kompilering och identifiering av ofta använda metoder är tidskrävande, och den initiala kompileringen uppnår inte högsta prestanda
AOT (Ahead-of-time kompilator) kompileras i förväg
Inom datavetenskap är tidig kompilering (AOT-kompilering) handlingen att kompilera ett (vanligtvis) högnivåprogrammeringsspråk till ett (vanligtvis) lågnivåspråk innan ett program körs, vanligtvis vid byggtid, för att minska den mängd arbete som måste utföras vid körning.
Oftast är det inte samma sak som att kombinera högnivåprogrammeringsspråk (såsom C eller C++) eller mellanliggande representationer som Java-bytecode eller . NET Framework Common Intermediate Language (CIL)-kod) kompilerad för att vara inhemsk (systemberoende) beteenderelaterad. maskinkod så att de resulterande binärfilerna kan köras nativt, precis som en standard native-kompilator. När det används i denna specifika miljö ses det ofta som motsatsen till just-in-time (JIT)-kompilering.
AOT-kompilering sker innan programmet kompileras eller installeras, det vill säga det förkompilerar skript eller bytekoder till maskinkod och kör dem direkt vid behov. Detta kan förbättra programmets starthastighet och undvika förseningar orsakade av kompileringsprocessen.
AOT-fördelar:
- Kompipilering innan programmet körs undviker kompileringsprestanda och minnesförbrukning vid körning
- Toppprestation kan uppnås tidigt i programmet
- Det kan avsevärt påskynda effektiviteten i programexekveringen
AOT-nackdelar:
- Kompipilering innan programmet körs ökar tiden det tar att installera programmet
- Att spara förkompilerat innehåll tar upp mer minne
- Att offra konsistensen hos högnivåspråk
sammanfattning
JIT: Hög genomströmning, prestandabonus under körning, kan köras snabbare och kan dynamiskt generera kod, etc., men det är relativt långsamt att starta och kräver en viss tid och anropsfrekvens för att trigga JIT-lagermekanismen AOT: Låg minnesanvändning, snabb uppstartshastighet, kan direkt koppla körtiden statiskt till det slutgiltiga programmet utan körtid, men det finns ingen prestandabonus under körning och kan inte optimeras ytterligare beroende på programmets körning
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
|
Föregående:.NET/C# Hög prestanda slår ihop flera filer till en enda filNästa:.NET/C# samlingslista, HashSet för att avgöra om ett element har ett benchmark
|