Le profilage de code est l' operation qui consiste a analyser un programme affin de repérer les portions qui prennent le plus de temps et de les refactoriser pour en améliorer les performances.
Il existe trois diferentes methodes :
- - Par echantillonage :
On mesure tout les n instants la fonction courante. Ainsi on peu aproximativement en deduire le temps passer dans chaque fonctions. - - Par instrumentation :
En modifiant le code du programme pour remplacer chaque apelle par une fonction d' instrumentation qui mesureras divers valeurs en utilisant des compteurs interne au processeur. - - Par émulation :
Le programme est exécute sur un processeur virtuel. Tout est alors mesurable pour le processeur émuler. (Mais le processeur émuler n'est pas celui de la machine hôte)
La premiere methode est asse aproximative. La seconde modifi le code et fausse donc les resultats, mais ils sont bien plus precis.
La troisime donne des resultats parfais, mais pour le processeur emuler, et non le processeur de la machine ou le programme devrais tourner. De plus cette methode est extremement lente (Il est difficile d' imaginer emuler un processeur plus rapide que le processeur qui effectue cette amulation)
Visual studio permet des mesures par echantillonage et instrumentation.
Sous *nix, valgrind est une suite d'outils capable d'effectuer de nombreuses mesures et pouvant aller jusqu'a l'emulation de processeur.
Ressource : http://matthieu-brucher.developpez.com/tutoriels/cpp/profil-valgrind-visual-studio/?page=visual_studio