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

Documents pareils