[C++] Profiling

Profiling [C++] - C++ - Programmation

Marsh Posté le 12-06-2007 à 12:05:55    

Bonjour,
 
je souhaiterais "profiler" un programme C++ que j'ai réalisé pour savoir dans quelle fonction il passe le plus de temps pour m'aider à l'optimiser. Pour celà je le compile avec l'option "-pg" et j'utilise ensuite gprof. Mon problème c'est que le programme s'execute pendant 70 secondes alors que le rapport de gprof parle de 20 secondes seulement. C'est probablement du à des appels de fonctions non interceptés pendant l'execution.  
Comment puis-je faire pour avoir des infos sur ces fonctions "cachées" ?
 
Merci d'avance :)

Reply

Marsh Posté le 12-06-2007 à 12:05:55   

Reply

Marsh Posté le 12-06-2007 à 12:50:50    

j'ai fait quelques tests en mesurant le temps pris par le programme et en commantant ou non des fonctions. En gros j'ai l'impression que gprof n'indique que le temps d'execution moyen ou maximum des fonctions, pas le temps cumulé de tous les appels à ces fonctions ?

Reply

Marsh Posté le 12-06-2007 à 12:52:50    

Et quand tu le compile normalement, il s'execute en combien de temps ?


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 12-06-2007 à 13:38:49    

Alors en fait c'est 60.3 secondes avec l'option -pg et 55.9 sans.
Et le temps total affiché par gprof est 13 secondes :/

Reply

Marsh Posté le 20-06-2007 à 13:15:24    

quand tu instrumentes un programme il va plus lentement.
Plutot que de mesurer le temps passé, ça te permet surtout de voir où il passe du temps en %
et donc de savoir les points que tu devras revoir dans ton code  :)
ça peut aussi etre pas mal de regarder le nombre d'appels, ça permet de voir si le temps cumulé passé dans une fonction est du au fait qu'elle est trop complexe ou qu'elle est appelée tres souvent (ex assesseur mal foutu). Dans les deux cas faut revoir :)


Message édité par whaam le 20-06-2007 à 13:24:14

---------------
"Bandaged and rejuvenated, Captain Goodnight Returns to the Fray"
Reply

Marsh Posté le 17-07-2007 à 17:26:08    

Il me semble que ce que tu as calculé est le temps d'exécution totale tandis que le profiler te donne le temps d'utilisation du processeur.
Dans un environnement multitaches avec peut-etre des entrée/sorties, ca semble logique, non ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed