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

Y a-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 =)

28
demandé sur Syntax_Error 2011-07-12 15:40:56

3 réponses

Pour le profilage d'instructions de machine, utilisez callgrind de valgrind (en outre, cachegrind peut faire du profilage de prédiction de cache et de branche, ce qui est assez agréable).

Pour les mesures de temps, utilisezle profileur cpu de google , il donne de meilleurs résultats que gprof. Vous pouvez définir la fréquence d'échantillonnage et il peut montrer la sortie d'un beau annoté graphe d'appel.

22
répondu Karoly Horvath 2017-04-25 01:01:57

Valgrind n'est pas adapté pour mesurer le temps, car l'exécution d'une application dans valgrind déforme 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 comptent), alors 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 dans les intervalles qui fonctionnent dans le processus, avec des résultats moins déformés.

14
répondu Frank Osterfeld 2011-07-12 12:51:05

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

3
répondu Sriram 2017-05-23 11:46:57