Compilation à la volée
Un article de Wikipédia, l'encyclopédie libre.
La compilation à la volée, aussi connue sous le nom de "traduction dynamique" (just-in-time 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.
Dans un système bytecode-compilé tel que Limbo, Smalltalk, Perl, Lua, GNU CLISP, ou d'anciennes versions 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 du bytecode est la première étape, réduisant le code source à une représentation intermédiaire optimisable. Le bytecode est dépolyé 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ée juste avant leur exécution (d'où le nom "à 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 facile à écrire, parce que le compilateur du bytecode a déjà fait la plupart du travail.
Sommaire |
[modifier] 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émentation de la machine virtuelle Java.
[modifier] Voir aussi
[modifier] Articles connexes
[modifier] Liens externes
- GNU lightning — Une bibliothèque générant du code assembleur à l'exécution
[modifier] 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