Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 3162|Répondre: 1

[Communication] Introduction et différence entre la compilation JIT et AOT dans .NET

[Copié le lien]
Publié sur 15/02/2024 17:17:46 | | | |
Terminologie

CLI : Common Language Infrastructure est une spécification sous le framework .NET qui définit un runtime inter-architecture indépendant du langage. Ainsi, nous pouvons développer des logiciels dans divers langages de haut niveau sous la spécification, qui peuvent fonctionner dans différentes architectures informatiques sans modification

CLR : Common Language Runtime. est une spécification qui garantit que l’environnement d’exploitation est indépendant du langage et inter-architectural

CTS : Système de types commun

CLS : Spécification du langage commun

FCL: Framework Class Library 架构类库,包含两部分: 基础类库 Base Class  Library 和成品类库

IL : Immediate Language Intermediate Language, Advanced Language Compiler compile le code source des langages avancés en langages intermédiaires.

JIT : Just In Time Compiler compile un langage intermédiaire en code machine qu’un ordinateur peut comprendre, lequel peut ensuite être exécuté

Le code source est compilé en IL par le compilateur C# (c’est-à-dire programmes, DLL, exécutables, etc.). Le CLR charge ces IL, les compile en code machine via JIT, puis est enfin exécuté, comme montré sur la figure suivante :



JIT (compilateur juste-in-temps) est compilé à la volée

Le compilateur just-in-time (JIT) fait partie du Common Language Runtime (CLR) dans .NET et est responsable de la gestion du fichier . .NET, quel que soit le programme . langage de programmation .NET. Les compilateurs spécifiques à chaque langage convertissent le code source en langages intermédiaires. Ce langage intermédiaire est ensuite converti en code machine par un compilateur juste-à-temps (JIT). Ce code machine est spécifique à l’environnement informatique dans lequel le compilateur JIT s’exécute.  Travail sur le compilateur JIT : Les compilateurs JIT doivent accélérer l’exécution du code et fournir un support pour plusieurs plateformes. Voici comment cela fonctionne :



Le compilateur JIT convertit Microsoft Intermediate Language (MSIL) ou Common Intermediate Language (CIL) en code machine. Cela se fait avant d’effectuer le MSIL ou le CIL. MSIL est converti en code machine selon les besoins, c’est-à-dire que le compilateur JIT compile MSIL ou CIL selon les besoins, plutôt que de compiler tout le code. Stockez le MSIL ou le CIL compilé afin qu’il puisse être utilisé lors des appels ultérieurs si nécessaire.

Avantages du JIT :

  • Il peut être compilé et généré en temps réel selon la situation matérielle actuelle
  • La séquence d’instructions machine optimale peut être générée selon l’opération du programme en cours
  • Lorsqu’un programme doit supporter la liaison dynamique, il ne peut utiliser que la méthode de compilation JIT
  • Le code peut être ajusté en fonction de la situation réelle de la mémoire dans le processus afin de mieux utiliser la mémoire


Inconvénients du JIT :

  • La compilation nécessite les ressources de l’exécution à l’exécution, ce qui provoque des saccades du processus lors de l’exécution
  • La compilation prend du temps d’exécution, et certaines optimisations de compilation de code ne peuvent pas être entièrement prises en charge, il est donc nécessaire d’équilibrer fluidité et temps
  • La préparation de la compilation et l’identification des méthodes fréquemment utilisées prennent du temps, et la compilation initiale n’atteint pas les performances les plus élevées


AOT (compilateur en avance du temps) est compilé à l’avance

En informatique, la compilation précoce (compilation AOT) consiste à compiler un langage de programmation (généralement) de haut niveau dans un langage (généralement) bas niveau avant d’exécuter un programme, généralement au moment de la compilation, afin de réduire l’effort nécessaire à l’exécution.

La plupart du temps, ce n’est pas la même chose que de combiner des langages de programmation de haut niveau (comme C ou C++) ou des représentations intermédiaires comme Java ou . NET Framework Common Intermediate Language (CIL) compilé pour être natif (dépendant du système) lié au comportement. code machine afin que les binaires résultants puissent être exécutés nativement, comme un compilateur natif standard. Lorsqu’il est utilisé dans cet environnement spécifique, il est souvent perçu comme l’antithèse de la compilation juste-à-temps (JIT).

La compilation AOT a lieu avant que le programme ne soit compilé ou installé, c’est-à-dire qu’elle précompile des scripts ou des bytecodes en code machine et les exécute directement lorsque nécessaire. Cela peut améliorer la vitesse de démarrage du programme et éviter les retards causés par le processus de compilation.

Avantages de l’AOT :

  • Compiler avant l’exécution du programme permet d’éviter les performances de compilation et la consommation de mémoire à l’exécution
  • La performance maximale peut être atteinte tôt dans le programme
  • Cela peut considérablement accélérer l’efficacité de l’exécution du programme


Inconvénients de l’AOT :

  • Compiler avant l’exécution du programme augmente le temps nécessaire pour installer le programme
  • Sauvegarder du contenu précompilé consomme plus de mémoire
  • Sacrifier la cohérence des langages de haut niveau


résumé

JIT : Haut débit, bonus de performance en temps réel, peut tourner plus vite et peut générer du code dynamiquement, etc., mais il est relativement lent à démarrer et nécessite un certain temps et une certaine fréquence d’appel pour déclencher le mécanisme de couche JIT
ATOT : Faible utilisation de la mémoire, vitesse de démarrage rapide, peut lier directement l’exécution statiquement au programme final sans temps d’exécution, mais il n’y a pas de bonus de performance en temps réel, et il ne peut pas être optimisé davantage selon l’exécution du programme



Référence:

La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.
La connexion hyperlientérée est visible.





Précédent:.NET/C# Haute performance fusionne plusieurs fichiers en un seul fichier
Prochain:.NET/C# collection Liste, HashSet pour déterminer si un élément possède un benchmark
 Propriétaire| Publié sur 10/03/2024 10:58:59 |
.NET/C# Plateforme de compilation Roslyn
https://www.itsvse.com/thread-10740-1-1.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com