Loading prj_rust_08_performance...

enib_small.png PRJ-Rust 08_Performance — Les performances et l'optimisation

Pour qu'une démarche d'analyse de performances en vue d'une optimisation soit significative, il faut que l'exécution du programme analysé dure suffisamment longtemps.
Utilisez alors à cette fin une fonction main() qui joue l'une ou l'autre (voire les deux) des partitions fournies à l'étape précédente.

Commençons par constater ce que le compilateur est capable de faire spontanément en matière d'optimisation.
Les processeurs modernes donnent des moyens d'estimer leur consommation d'énergie.
La commande pyCpuEnergy, disponible dans les salles de Labo de l'ENIB exploite cette possibilité.
Comparez alors les consommations d'énergie (en Joules) dans ces deux configurations :
Les lignes PACKAGE et DRAM (si disponibles sur le matériel) doivent être relevées attentivement puisqu'elles estiment la quantité d'énergie, en Joules, consommée par notre traitement (calcul et accès à la mémoire).
Il est nécessaire de relancer ces commandes plusieurs fois afin d'estimer des valeurs moyennes.
Voici un exemple relevé sur un poste de travail (pour le jeu des deux partitions) :
Nous constatons deux choses :

Appliquez maintenant la démarche indiquée dans cet exemple.

Nous pouvons alors reprendre l'expérimentation précédente pour constater l'effet du remaniement de notre code sur la consommation énergétique.
Voici un exemple relevé sur le même poste de travail que précédemment :
Comme prévu, la mesure en mode de mise-au-point est tellement peu significative que l'amélioration de notre code est à peine perceptible.
En revanche, en mode optimisé nous obtenons, par rapport au code non remanié :
Nous constatons que nos efforts de remaniement de notre code ont un effet très significatif sur les dépenses énergétiques du traitement réalisé.