web-dev-qa-db-fra.com

utilisez valgrind pour connaître le temps (en secondes) passé dans chaque fonction

existe-t-il une extension de valgrind, qui peut être utilisée dans la fenêtre de commande, qui m'aiderait à connaître le temps, en secondes, passé dans chaque fonction de mon code C?

merci =)

33
Syntax_Error

Pour le profilage des instructions machine, utilisez callgrind de valgrind (aussi, cachegrind peut faire un profilage de prédiction de cache et de branche qui est assez sympa).

Pour les mesures de temps, utilisez profileur cpu de google , cela donne de meilleurs résultats que gprof. Vous pouvez définir la fréquence d'échantillonnage et il peut afficher la sortie sous forme de graphique d'appel annoté Nice.

28
Karoly Horvath

Valgrind n'est pas adapté pour mesurer le temps, car l'exécution d'une application dans valgrind fausse les résultats (ralentissement, CPU vs E/S). Ainsi, l'outil de profilage valgrind callgrind ne mesure pas le temps mais les instructions du processeur. Callgrind n'est utile que si votre goulot d'étranglement est lié au processeur (donc les instructions du processeur sont importantes), les instructions du processeur mesurées seront proportionnelles au temps passé. Ce n'est pas utile si des E/S lourdes ou plusieurs processus sont impliqués. Ensuite, vous devez utiliser un profileur d'échantillonnage, comme gprof ou sysprof. Cela vérifie les intervalles dans lesquels fonctionne le processus, avec des résultats moins déformés.

17
Frank Osterfeld

Utilisez le lien this . Je pense que quelque chose comme Callgrind devrait faire l'affaire.

3
Sriram