|
|
Publisert på 15.02.2024 17:17:46
|
|
|
|

Terminologi
CLI: Common Language Infrastructure er en spesifikasjon under .NET-rammeverket som definerer en språk-agnostisk, tverr-arkitektur kjøretid. Derfor kan vi utvikle programvare i ulike høynivåspråk under spesifikasjonen som kan kjøre i ulike datamaskinarkitekturer uten endringer
CLR: Common Language Runtime. er en spesifikasjon som sikrer at driftsmiljøet er språkuavhengig og tverr-arkitektonisk
CTS: Common Type System
CLS: Common Language Specification
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler kompilerer kildekoden til avanserte språk til mellomliggende språk.
JIT: Just In Time Compiler kompilerer et mellomliggende språk til maskinkode som en datamaskin kan forstå, som deretter kan kjøres
Kildekoden kompileres til IL av C#-kompilatoren (dvs. programmer, dll-filer, ex-filer osv.). CLR laster inn disse IL-ene, kompilerer dem til maskinkode via JIT, og blir til slutt utført, som vist i følgende figur:
JIT (Just-in-time-kompilator) kompileres underveis
Just-in-time-kompilatoren (JIT) er en del av Common Language Runtime (CLR) i .NET og har ansvar for å administrere . .NET-program, uavhengig av . .NET programmeringsspråk. Språkspesifikke kompilatorer konverterer kildekode til mellomliggende språk. Dette mellomliggende språket konverteres deretter til maskinkode av en just-in-time (JIT) kompilator. Denne maskinkoden er spesifikk for datamiljøet der JIT-kompilatoren kjører. JIT-kompilatorarbeid: JIT-kompilatorer må øke hastigheten på kodeutførelsen og gi støtte for flere plattformer. Slik fungerer det:
JIT-kompilatoren konverterer Microsoft Intermediate Language (MSIL) eller Common Intermediate Language (CIL) til maskinkode. Dette gjøres før man utfører MSIL eller CIL. MSIL konverteres til maskinkode etter behov, det vil si at JIT-kompilatoren kompilerer MSIL eller CIL etter behov, i stedet for å kompilere hele koden. Lagre den kompilerte MSIL eller CIL slik at den kan brukes til påfølgende samtaler om nødvendig.
JIT-fordeler:
- Den kan kompileres og genereres i sanntid i henhold til dagens maskinvaresituasjon
- Den optimale maskininstruksjonssekvensen kan genereres i henhold til den nåværende programoperasjonen
- Når et program trenger å støtte dynamisk lenking, kan det bare bruke JIT-kompileringsmetoden
- Koden kan justeres etter den faktiske situasjonen til minnet i prosessen for å utnytte minnet bedre
JIT-ulemper:
- Kompilering krever ressursene til kjøretidskjøringen, noe som gjør at prosessen hakker under kjøring
- Kompilering tar kjøretid, og noen kodekompilasjonsoptimaliseringer kan ikke støttes fullt ut, så det er nødvendig å balansere flyt og tid
- Forberedelse av kompilering og identifisering av ofte brukte metoder er tidkrevende, og den første kompileringen oppnår ikke den høyeste ytelsen
AOT (Ahead-of-time compiler) kompileres på forhånd
Innen informatikk er tidlig kompilering (AOT-kompilering) handlingen med å kompilere et (vanligvis) høynivå programmeringsspråk til et (vanligvis) lavnivåspråk før et program kjøres, vanligvis under byggetid, for å redusere mengden arbeid som må utføres under kjøring.
Som oftest er det ikke det samme som å kombinere høynivå programmeringsspråk (som C eller C++) eller mellomrepresentasjoner som Java-bytekode eller . NET Framework Common Intermediate Language (CIL)-kode) kompilert for å være native (systemavhengig) atferdsrelatert. maskinkode slik at de resulterende binærfilene kan kjøres nativt, akkurat som en standard native kompilator. Når det brukes i dette spesifikke miljøet, blir det ofte sett på som det motsatte av just-in-time (JIT)-kompilering.
AOT-kompilering skjer før programmet kompileres eller installeres, det vil si at det forhåndskompilerer skript eller bytekoder til maskinkode og kjører dem direkte ved behov. Dette kan forbedre oppstartshastigheten på programmet og unngå forsinkelser forårsaket av kompileringsprosessen.
AOT-fordeler:
- Kompilering før programmet kjører unngår kompilasjonsytelse og minneforbruk under kjøring
- Toppprestasjoner kan oppnås tidlig i programmet
- Det kan betydelig øke effektiviteten i programutførelsen
AOT-ulemper:
- Kompilering før programmet kjører øker tiden det tar å installere programmet
- Å lagre forhåndskompilert innhold tar mer minne
- Ofring av konsistensen til høynivåspråk
sammendrag
JIT: Høy gjennomstrømning, ytelsesbonus under kjøring, kan kjøre raskere, og kan generere kode dynamisk, osv., men det er relativt tregt å starte og krever en viss tid og samtalefrekvens for å utløse JIT-lagdelingsmekanismen AOT: Lavt minnebruk, rask oppstartshastighet, kan koble kjøretiden statisk til det endelige programmet uten kjøretid, men det er ingen ytelsesbonus under kjøring, og det kan ikke optimaliseres videre i henhold til programmets kjøring
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
|
Foregående:.NET/C# Høy ytelse slår sammen flere filer til én filNeste:.NET/C# samlingsliste, HashSet for å avgjøre om et element har en benchmark
|