Question

Que suggéreriez-vous au meilleur outil pour profiler le code C / C ++ et déterminer les parties qui prennent le plus de temps? Actuellement, je ne fais que me fier aux journaux, mais bien sûr, les informations ne sont pas exactes car des retards inutiles sont introduits.

De préférence, l'outil serait également capable de détecter / suggérer des zones qui pourraient être optimisées, si un tel outil existait.

Plate-forme: Linux

L'application doit être utilisée dans un environnement intégré. Elle doit donc être légère et externe (pas un plug-in sur certains IDE).

Était-ce utile?

La solution

Je recommande vivement callgrind en combinaison avec KCachegrind .

Autres conseils

" gprof " sur linux / freebsd est un outil assez simple et efficace pour identifier les routines qui monopolisent le cPU au moment de l’exécution. Il donne un profil à la fois imbriqué et plat de fonctions. Il vous donne le pourcentage de temps CPU pris par chaque fonction exécutée pendant l'exécution du profileur, ainsi que le pourcentage pris dans la fonction elle-même et le pourcentage pris par ses fonctions enfants. Cela vous aide à séparer facilement les fonctions incriminées.

J'ai utilisé le profileur de Microsoft Visual C ++ avec succès. Il existe d'autres programmes externes, tels que Intels VTune , également, mais la plupart d’entre eux ne sont pas gratuits.

Dépend de la plate-forme. Si vous utilisez MSVC, certaines versions de celui-ci ont un profileur intégré. AMD et Intel ont également des profileurs disponibles (CodeAnalyst et VTune).

Sous Linux, le seul que j'ai utilisé est gprof, mais je sais qu'il en existe d'autres (et je pense que ceux d'AMD ou d'Intels sont également disponibles dans les versions Linux)

Et bien sûr, l’ensemble de la suite Valgrind peut également être utile. Certains outils, tels que callgrind ou cachegrind, peuvent vous fournir de nombreuses informations sur les performances.

Il existe de nombreux bons outils de profilage pour cela, comme Quantify ou KCachegrind. L’un des problèmes de ces outils est qu’ils ralentissent les performances au moment de l’exécution, de sorte qu’ils peuvent ne pas s’adapter suffisamment à certains grands systèmes.

Parfois, il suffit de lancer le débogueur et d’appuyer sur ctrl-c, de regarder le tracé de la pile et de le répéter 4 fois peut-être.

Si vous vous trouvez toujours dans la même partie du code, vous avez probablement constaté où vous passez la plupart du temps.

Vous voulez clairement deux choses:

  1. Pour profiler votre code & amp; mesurez-le.

  2. Pour détecter les zones pouvant être optimisées.

Ce sont des problèmes différents. Ils ne sont pas les mêmes, malgré ce qu'on vous a peut-être dit.

Pour le problème (1), plusieurs bons profileurs seront suggérés.

Pour les profileurs à problème (2), l’aide n’est indirecte.
Il existe une technique beaucoup plus simple et généralement plus efficace.

Voir ici

Je vais utiliser gprof / oprofile, si nous parlons du monde UNIX.

Vous devez recompiler votre application (au moins avec gprof).

Gprof

Oprofile

Si vous utilisez Windows, je suggère AQTime . Prend en charge presque tous les compilateurs, y compris .NET, Delphi et VB (et tous les compilateurs C ++, bien sûr (;). Il s’agit du meilleur outil de profilage que j’ai jamais essayé. Et ce n’est pas seulement un profileur de performances.

Pour les mesures de performance, oprofile est un bon choix car il existe un plug-in convivial pour eclipse dans le Projet Outils Linux .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top