Terminologie
CLI: Common Language Infrastructure is een specificatie onder het .NET-framework die een taal-agnostische, cross-architecture runtime definieert. Daarom kunnen we software ontwikkelen in verschillende hoog-niveau talen onder de specificatie die zonder aanpassing in verschillende computerarchitecturen kan draaien
CLR: Common Language Runtime. is een specificatie die ervoor zorgt dat de operationele omgeving taalonafhankelijk en cross-architectural is
CTS: Common Type System
CLS: Common Language Specificatie
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler compileert de broncode van geavanceerde talen tot tussenliggende talen.
JIT: Just In Time Compiler compileert een intermediaire taal tot machinecode die een computer kan begrijpen, die vervolgens kan worden uitgevoerd
Broncode wordt gecompileerd naar IL door een C# Compiler (d.w.z. programma's, dll's, ex'en, enz.). De CLR laadt deze IL's, compileert ze in machinecode via JIT en wordt uiteindelijk uitgevoerd, zoals weergegeven in de volgende figuur:
JIT (Just-in-time compiler) wordt direct gecompileerd
De just-in-time compiler (JIT) maakt deel uit van de Common Language Runtime (CLR) in .NET en is verantwoordelijk voor het beheren van de . .NET-programma, ongeacht elk . .NET programmeertaal. Taalspecifieke compilers converteren broncode naar tussenliggende talen. Deze tussenliggende taal wordt vervolgens omgezet in machinecode door een just-in-time (JIT) compiler. Deze machinecode is specifiek voor de computeromgeving waarin de JIT-compiler draait. JIT-compilerwerk: JIT-compilers moeten de code-uitvoering versnellen en ondersteuning bieden voor meerdere platforms. Zo werkt het:
De JIT-compiler zet Microsoft Intermediate Language (MSIL) of Common Intermediate Language (CIL) om in machinecode. Dit gebeurt voordat MSIL of CIL wordt uitgevoerd. MSIL wordt indien nodig omgezet naar machinecode, d.w.z. de JIT-compiler compileert MSIL of CIL indien nodig, in plaats van de volledige code te compileren. Sla de gecompileerde MSIL of CIL op zodat deze gebruikt kan worden voor volgende oproepen indien nodig.
JIT Voordele:
- Het kan in realtime worden gecompileerd en gegenereerd afhankelijk van de huidige hardwaresituatie
- De optimale machine-instructievolgorde kan worden gegenereerd volgens de huidige programmabewerking
- Wanneer een programma dynamisch koppelen moet ondersteunen, kan het alleen de JIT-compilatiemethode gebruiken
- De code kan worden aangepast aan de werkelijke situatie van het geheugen in het proces om het geheugen beter te benutten
JIT Nadelen:
- Compileren vereist de resources van de runtime runtime, waardoor het proces stottert bij het uitvoeren
- Compilatie kost looptijd, en sommige codecompilatieoptimalisaties kunnen niet volledig worden ondersteund, dus het is noodzakelijk om vloeiendheid en tijd in balans te brengen
- Compilatievoorbereiding en identificatie van vaak gebruikte methoden kost veel tijd, en de initiële compilatie levert niet de hoogste prestaties
AOT (Ahead-of-time compiler) wordt vooraf gecompileerd
In de informatica is vroege compilatie (AOT-compilatie) het compileren van een (meestal) hoog-niveau programmeertaal in een (meestal) laag-niveau taal voordat een programma wordt uitgevoerd, meestal tijdens het bouwproces, om de hoeveelheid inspanning die tijdens runtime moet worden verricht te verminderen.
Meestal is het niet hetzelfde als het combineren van hoog-niveau programmeertalen (zoals C of C++) of tussenrepresentaties zoals Java bytecode of . NET Framework Common Intermediate Language (CIL) code) gecompileerd om native (systeemafhankelijk) gedragsgerelateerd te zijn. machinecode zodat de resulterende binaries native kunnen worden uitgevoerd, net als een standaard native compiler. Wanneer het in deze specifieke omgeving wordt gebruikt, wordt het vaak gezien als het tegenovergestelde van just-in-time (JIT) compilatie.
AOT-compilatie vindt plaats voordat het programma is gecompileerd of geïnstalleerd, dat wil zeggen, het precompileert scripts of bytecodes in machinecode en voert deze direct uit wanneer dat nodig is. Dit kan de opstartsnelheid van het programma verbeteren en vertragingen door het compilatieproces voorkomen.
AOT Voordele:
- Compileren voordat het programma draait, voorkomt compilatieprestaties en geheugenverbruik tijdens runtime
- Piekprestaties kunnen vroeg in het programma worden bereikt
- Het kan de efficiëntie van de programma-uitvoering aanzienlijk versnellen
AOT Nadelen:
- Compileren voordat het programma draait verlengt de tijd die nodig is om het programma te installeren
- Het opslaan van vooraf gecompileerde inhoud kost meer geheugen
- Het opofferen van de consistentie van hoog-niveau talen
samenvatting
JIT: Hoge doorvoersnelheid, runtime-prestatiebonus, kan sneller draaien en kan dynamisch code genereren, enzovoort, maar het is relatief traag om op te starten en vereist een bepaalde hoeveelheid tijd en frequentie van oproepen om het JIT-layeringmechanisme te activeren AOT: Laag geheugengebruik, snelle opstartsnelheid, kan de runtime statisch direct koppelen aan het uiteindelijke programma zonder runtime, maar er is geen runtime-prestatiebonus en het kan niet verder worden geoptimaliseerd afhankelijk van het uitvoeren van het programma
Referentie:
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
|