J'avais l'habitude de faire tout mon profilage Linux avec gprof .
Cependant, avec mon multithreading mais son résultat semble être incohérent.
Maintenant, j'ai déterré ça :
http://sam.zoy.org/writings/programming/gprof.html
Cependant, cela date d'il y a longtemps et dans ma sortie gprof, il semble que ma gprof liste les fonctions utilisées par les threads non principaux.
Donc, mes questions sont :
- En 2010, puis-je facilement utiliser gprof pour profiler des applications Linux C++ multithreadées ? ( Ubuntu 9.10 )
- Quels autres outils dois-je envisager pour le profilage ?
5 votes
De préférence quelque chose qui ne soit pas aussi lent que valgrind.
2 votes
S'il vous plaît, dites-moi les alternatives, mais pas les alternatives. Vérifiez.
0 votes
Vous vouliez un profileur, ce dernier charge votre binaire et ajoute des crochets supplémentaires pour suivre l'exécution, ce qui fait qu'il sera toujours plus lent que si vous l'exécutez sans valgrind. Y a-t-il une raison pour laquelle vous avez un problème de ralentissement ? Je pense que valgrind a été utilisé pour profiler de grosses applications et qu'il n'a pas eu de problème - à moins que vous ayez une raison pour laquelle il ne peut pas fonctionner plus lentement pendant le profilage.
4 votes
@stefanB : le ralentissement de gprof avec le -pg de g++ est correct ; le ralentissement de valgrind est de 10x au moins.
0 votes
Lorsque vous exécutez gprof et valgrind, obtenez-vous des résultats très différents ? Ou bien vous n'aimez pas le fait qu'il tourne plus lentement ? Je veux dire qu'il peut y avoir des raisons valables pour lesquelles vous ne pouvez pas utiliser un profileur plus lent mais je suppose que vous voulez voir où votre application passe son temps.
4 votes
@dmckee @stefanB pourquoi êtes-vous si sévère ? C'est une observation parfaitement valide que valgrind ralentit beaucoup le programme. Pour ma part, je choisis aussi le profileur le plus rapide, si j'ai le choix.
1 votes
Le ralentissement est particulièrement ennuyeux lorsque vous avez des programmes avec des timers... nous devons grossir toutes nos valeurs de time out par 10 lorsque nous lançons valgrind pour tracer les fuites de mémoire, c'est ennuyeux :/.
1 votes
@Laurynas : Parce que poser une question puis changer les conditions après les réponses commencent à arriver, c'est normal avec cet OP. Parce que la question n'est pas vraiment nulle, mais l'approche du posteur n'est pas utile. Parce que s'il savait déjà que valgrind n'était pas un bon choix pour cette utilisation et qu'il ne l'a pas mentionné, il s'y prend mal.
5 votes
Valgrind est très fidèle à la marque, bien qu'il soit 10 fois plus lent. Le problème est qu'il ne ralentit pas les E/S par un facteur proportionnel, donc si normalement il y a 30% de temps passé en E/S inutiles, avec Valgrind cela ne ressemblera qu'à 3%.
1 votes
@dmckee Je vois. J'ai supposé que le PO avait simplement oublié de mentionner toutes les contraintes, ce qui m'arrive tout le temps, mais je suppose que je suis trop généreux avec le bénéfice du doute.
1 votes
@everyone : J'essaie de profiler une application interactive OpenGL fonctionnant à 30 images par seconde. Le ralentissement de 10x est inacceptable. dmckee : vous avez raison en ce sens que cette exigence n'a jamais été énoncée dans le problème original.