Aller au contenu

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