|
|
Pubblicato su 15/02/2024 17:17:46
|
|
|
|

Terminologia
CLI: Common Language Infrastructure è una specifica sotto il framework .NET che definisce un runtime indipendente dal linguaggio e cross-architecture. Pertanto, possiamo sviluppare software in vari linguaggi di alto livello sotto la specifica che possono funzionare in diverse architetture di computer senza modifiche
CLR: Runtime Common Language. è una specifica che garantisce che l'ambiente operativo sia indipendente dal linguaggio e cross-architetturale
CTS: Sistema di Tipi Comune
CLS: Specifica del Linguaggio Comune
FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class Library 和成品类库
IL: Immediate Language Intermediate Language, Advanced Language Compiler compila il codice sorgente dei linguaggi avanzati in linguaggi intermedi.
JIT: Just In Time Compiler compila un linguaggio intermedio in codice macchina che un computer può comprendere, che può poi essere eseguito
Il codice sorgente viene compilato in IL dal compilatore C# (cioè programmi, dll, ex, ecc.). Il CLR carica questi IL, li compila in codice macchina tramite JIT e viene infine eseguito, come mostrato nella figura seguente:
JIT (Just-in-time compiler) viene compilato al volo
Il compilatore just-in-time (JIT) fa parte del Common Language Runtime (CLR) in .NET ed è responsabile della gestione del file . .NET, indipendentemente da eventuali programmi . linguaggio di programmazione .NET. I compilatori specifici per linguaggio convertono il codice sorgente in linguaggi intermedi. Questo linguaggio intermedio viene poi convertito in codice macchina da un compilatore just-in-time (JIT). Questo codice macchina è specifico per l'ambiente informatico in cui funziona il compilatore JIT. Lavoro sul compilatore JIT: I compilatori JIT devono velocizzare l'esecuzione del codice e fornire supporto per più piattaforme. Ecco come funziona:
Il compilatore JIT converte Microsoft Intermediate Language (MSIL) o Common Intermediate Language (CIL) in codice macchina. Questo avviene prima di eseguire MSIL o CIL. MSIL viene convertito in codice macchina secondo necessità, cioè il compilatore JIT compila MSIL o CIL secondo necessità, invece di compilare l'intero codice. Memorizza il MSIL o il CIL compilati in modo che possano essere utilizzati per chiamate successive se necessario.
Pro JIT:
- Può essere compilato e generato in tempo reale in base alla situazione hardware attuale
- La sequenza ottimale di istruzioni della macchina può essere generata in base all'operazione attuale del programma
- Quando un programma deve supportare il collegamento dinamico, può utilizzare solo il metodo di compilazione JIT
- Il codice può essere adattato in base alla situazione reale della memoria nel processo per sfruttarla meglio
Contro JIT:
- La compilazione richiede le risorse del runtime di runtime, il che provoca un scattio del processo durante l'esecuzione
- La compilazione occupa tempo di esecuzione e alcune ottimizzazioni per la compilazione del codice non possono essere completamente supportate, quindi è necessario bilanciare fluidità e tempo
- La preparazione della compilazione e l'identificazione dei metodi frequentemente utilizzati richiedono molto tempo, e la compilazione iniziale non raggiunge le massime prestazioni
AOT (compilatore in anticipo del tempo) viene compilato in anticipo
In informatica, la compilazione precoce (compilazione AOT) è l'atto di compilare un linguaggio di programmazione (di solito) di alto livello in un linguaggio (di solito) di basso livello prima di eseguire un programma, di solito a tempo di compilazione, per ridurre la quantità di sforzo necessario a runtime.
La maggior parte delle volte, non è la stessa cosa che combinare linguaggi di programmazione ad alto livello (come C o C++) o rappresentazioni intermedie come il bytecode Java o . codice del NET Framework Common Intermediate Language (CIL) compilato per essere nativo (dipendente dal sistema) legato al comportamento. codice macchina in modo che i binari risultanti possano essere eseguiti nativamente, proprio come un compilatore nativo standard. Quando viene utilizzato in questo ambiente specifico, spesso è considerato l'antitesi della compilazione just-in-time (JIT).
La compilazione AOT avviene prima che il programma venga compilato o installato, cioè precompila script o bytecode in codice macchina ed esegui direttamente quando necessario. Questo può migliorare la velocità di avvio del programma ed evitare ritardi causati dal processo di compilazione.
Pro di AOT:
- Compilare prima che il programma venga eseguito evita le prestazioni di compilazione e il consumo di memoria durante l'esecuzione
- Le prestazioni al massimo possono essere raggiunte nelle prime fasi del programma
- Può accelerare significativamente l'efficienza dell'esecuzione del programma
Contro di AOT:
- Compilare prima che il programma venga eseguito aumenta il tempo necessario per installarlo
- Salvare contenuti precompilati occupa più memoria
- Sacrificare la coerenza dei linguaggi di alto livello
sommario
JIT: Alto throughput, bonus prestazioni in runtime, può girare più velocemente e generare codice dinamicamente, ecc., ma è relativamente lento all'avvio e richiede un certo tempo e una certa frequenza di chiamata per attivare il meccanismo di stratificazione JIT AOT: Basso utilizzo di memoria, velocità di avvio elevata, può collegare direttamente l'esecuzione statica al programma finale senza che l'esecuzione sia in tempo reale, ma non c'è alcun bonus di prestazioni in tempo reale e non può essere ulteriormente ottimizzata in base all'esecuzione del programma
Riferimento:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
|
Precedente:.NET/C# Ad alte prestazioni unisce più file in un unico fileProssimo:.NET/C# collection List, HashSet per determinare se un elemento ha un benchmark
|