ComPiLaTioN JUST iN Time Exploiter au mieux les
Transcription
ComPiLaTioN JUST iN Time Exploiter au mieux les
Exploiter au mieux les optimisations de la compilation JIT. La compilation JIT (Just In Time) est une nouveauté importante des versions 12. La compilation JIT permet de générer des instructions directement en assembleur en tenant compte de la plateforme de l'utilisateur : le gain est évident. Il est donc plus qu'intéressant de comprendre comment bénéficier de cette compilation JIT et aussi de savoir comment adapter un code existant pour optimiser les performances de cette compilation JIT et donc des applications. Opérations concernées Principe Optimisations Pour illustrer le fonctionnement de cette compilation JIT, nous avons utilisé le projet "WD Fractales" présent sur le DVD. Le projet "WD Fractales" est un exemple de calcul scientifique bien connu : le calcul de fractales. tre n'est pas modifié par la procédure. La compilation JIT est automatiquement activée et optimise : • Toutes les opérations mathématiques : Addition, soustraction, multiplication, division • Certaines fonctions mathématiques comme cosinus, sinus, tangente, modulo • Les fonctions d'opération binaires : ou binaire, et binaire, ... • Certaines fonctions sur les entiers : ConstruitEntier, valeur absolue, .. En fait, toutes les fonctions et opérateurs qui utilisent des nombres et des opérations mathématiques… Les performances du JIT peuvent encore être améliorées en adaptant le code des applications. Pour essayer ces optimisations, il est tout à fait possible de les réaliser dans l'exemple "WD Fractale". Sans la compilation JIT Première optimisation Première étape, pour avoir un ordre de grandeur du temps d'exécution actuel, il faut exécuter cette application sans la compilation JIT. Pour cela, il suffit d'ouvrir le projet et de faire un "Go" du projet. En effet, la compilation JIT n'est pas utilisée lors du mode test car WinDev a besoin de connaître pas à pas le code en cours d'exécution (principalement pour le deboggueur). Partout où c’est possible, il est conseillé d'utiliser des paramètres locaux pour vos procédures (par exemple dans la procédure "Fractale" de l'exemple). À la fin du calcul, le temps passé est affiché et sera le temps de référence. Exécution avec compilation JIT Pour bénéficier de la compilation JIT, par défaut, il suffit de créer l'éxécutable. Dès son lancement, la compilation JIT sera automatiquement utilisée. À la fin du calcul, le temps passé est affiché et il est alors facile de comparer par rapport au temps de référence mesuré précédemment. D'ailleurs, le résultat est généralement perceptible pendant l'exécution. Deuxième optimisation Indiquer le type des paramètres dans le code de la procédure détermine sa taille en octets, ce qui rend la compilation JIT encore plus efficace. Troisième optimisation Il est important de découper les calculs au maximum et d'utiliser des variables locales. Par exemple, dans une même procédure, il n'est pas optimal d'utiliser plusieurs fois la propriété ..Largeur sur le même champ, car : • A chaque exécution, l'application doit rechercher la largeur du champ. • La compilation JIT ne peut pas optimiser ce type de calcul. La solution est donc de stocker la largeur et la hauteur du champ dans une variable locale. Cette optimisation est également valable si vous n’utilisez pas encore le JIT ou une version précédente de WinDev. Pour indiquer qu'un paramètre est un paramètre local et non global, il suffit d'ajouter le mot-clé "Local" devant les paramètres. Pourquoi cette optimisation ? Tout simplement parce que les variables locales peuvent être stockées dans des registres mémoire, alors que les variables globales ne le peuvent pas. Les variables globales sont-elles stockées à une adresse mémoire. Et l’accès à un registre mémoire est entre 1 à 10 fois plus rapide que l’accès à une adresse mémoire. Avertissement : Avec le mot-clé "Local", les paramètres sont passés par valeur et plus par adresse comme c'est le cas par défaut dans le WLangage. Ce mot-clé ne doit donc être utilisé que si le paramè- TDF TECH 2008 - www.pcsoft.fr - 23 Gains développeurs Compilation Just In Time