Améliorer la performance de systèmes bytecode-compilés


Smalltalk logo
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 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.BY TAATJENE

Comments

Popular Posts