- Compilation à la volée
-
Dans le domaine de la programmation informatique, la compilation à la volée, aussi connue sous le nom de traduction dynamique (just-in-time compilation ou JIT compilation en anglais), est une technique visant à améliorer la performance de systèmes bytecode-compilés par la traduction de bytecode en code machine natif au moment de l'exécution. La compilation à la volée se base sur deux anciennes idées : la compilation de bytecode et la compilation dynamique.
Sommaire
Description
Dans un système bytecode-compilé tel que Limbo, Smalltalk, Perl, Lua, GNU CLISP, ou de Java, le code source est traduit dans une représentation intermédiaire: le bytecode. Le bytecode n'est pas un code machine pour un ordinateur en particulier, il est portable entre différentes architectures. Le bytecode est ensuite interprété ou bien exécuté par une machine virtuelle.
Un environnement de compilation dynamique est un environnement dans lequel le compilateur peut être utilisé durant l'exécution. Par exemple, la plupart des systèmes Common Lisp ont une fonction compile qui peut créer de nouvelles fonctions compilées durant l'exécution. Alors qu'elle peut être avantageuse pour du débogage interactif, la compilation dynamique s'avère moins utile pour un système déployé.
Dans un environnement de compilation à la volée, la compilation est la première étape, réduisant le code source à une représentation intermédiaire optimisable appelée bytecode. Celui-ci est déployé sur le système cible. Lorsque le code est exécuté, le compilateur à la volée le traduit en code machine natif. Ceci peut être fait sur un fichier ou sur une fonction. Les fonctions peuvent être compilées juste avant leur exécution (d'où l'expression « à la volée »).
Le but est de combiner les avantages de la compilation native et du bytecode. Les tâches ardues telles que l'analyse du code source original et les optimisations sont accomplies à la compilation, bien avant le déploiement -- la compilation du bytecode en code machine est beaucoup plus rapide que depuis le code source. Le bytecode déployé est portable, à l'inverse du code machine pour une architecture donnée. Les compilateurs de bytecode en code machine sont plus faciles à écrire, parce que le compilateur du bytecode a déjà fait la plupart du travail.
Histoire
La traduction dynamique a été initiée dans le début des années 1980 par l'implémentation commerciale de Smalltalk: VisualWorks. Actuellement, elle est aussi utilisée dans la plupart des implémentations de la machine virtuelle Java.
Voir aussi
Articles connexes
Liens externes
- GNU lightning — Une bibliothèque générant du code assembleur à l'exécution
Sources
- L. Peter Deutsch et Allan M. Schiffman, "Efficient Implementation of the Smalltalk-80 System", 11th Annual Symposium on Principles of Programming Languages, Jan 1984, pp. 297-302
- Free Online Dictionary of Computing entry
Catégorie :- Théorie de la compilation
Wikimedia Foundation. 2010.