Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 3162|Risposta: 1

[Comunicazione] Introduzione e differenza tra compilazione JIT e AOT in .NET

[Copiato link]
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 file
Prossimo:.NET/C# collection List, HashSet per determinare se un elemento ha un benchmark
 Padrone di casa| Pubblicato su 10/03/2024 10:58:59 |
Piattaforma compilatrice .NET/C# Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com