Introduction
Domaines
Énergie
Timing (réaction / variations)
Temps de démarrage
Profiling
L’analyse des performances d’un logiciel est aussi nommée Profiling
Lorsque l’on souhaite optimiser une application logicielle, il faut tout d’abord savoir quelle partie optimiser
On cherche à identifier les «hot spots»
On s’intéresse principalement à connaître :
- Le temps d’exécution : où notre programme passe le plus de temps ?
- Le nombre d’exécutions : quelles fonctions sont exécutées le plus souvent ?
- L’arbre d’appel des fonctions (call-graph) : quelle fonction appelle quelle fonction ?
Granularité
Avec quelle granularité souhaite-t-on effectuer la mesure?
Niveaux de mesure possibles :
- Application
- Méthode/fonction
- Ligne de code en langage évolué
- Instruction machine
Stratégies
Différentes stratégies peuvent être mises en place :
- Instrumentation
- Statistique
Instrumentation :
- Utilisation des outils du système d’exploitation et du compilateur
- Mesure manuelle du temps avec la lecture d’horloges haute résolution
- Mesure manuelle du temps avec un oscilloscope
- Instrumentation dans une machine virtuelle
Statistique :
- Le programme fonctionne sans modification
- Un outil échantillonne l’exécution du programme à intervalle régulier :
- En utilisant les propriétés du microprocesseur
- En échantillonnant sa pile d’appels
Optimisation
Une fois les hot-spots identifiés, plusieurs pistes peuvent être suivies pour optimiser les performances de l’application :
- Choix d’algorithmes plus appropriés
- Emploi plus judicieux des bibliothèques à disposition
- Meilleure utilisation des options de compilation
- Adaptation du code aux propriétés du microprocesseur
- Changement du langage de programmation
- Changement de la plateforme