2 votes

Test de performance du code C++

Quels outils gratuits puis-je utiliser pour tester les performances d'un code C++ sous Linux ? En fait, je veux identifier le goulot d'étranglement du code et améliorer les performances. Mon application implique principalement du code de calcul utilisant les données du réseau. J'aimerais donc améliorer la vitesse d'exécution du code.

Gracias.

7voto

aeh Points 651

C'est ce que j'utilise pour l'évaluation des performances.

  • gprof/oprofile - pour le profilage intensif de votre code par le CPU.
  • netstat/ethereal - pour les statistiques réseau
  • iostat/sar - pour les E/S
  • vmstat - pour la mémoire
  • mpstat/sar - pour l'utilisation du processeur

Vous pouvez maintenant isoler les problèmes en vous basant sur les résultats de ces outils.

Par exemple : si les E/S sont constantes et dans les limites, vous pouvez éliminer les E/S comme problème. Si l'utilisation du CPU est importante comme le montre mpstat, il faut alors utiliser le profilage en utilisant gprof/oprofile.

Sans l'utilisation de tous ces éléments ensemble pour différents cycles, il est difficile d'identifier le goulot d'étranglement.

Note : Vous pouvez écrire un script pour les exécuter tous ensemble et stocker les résultats dans des dossiers désignés pour chaque exécution.

2voto

Gabriel Schreiber Points 940

Je recommande Valgrind para

  • utilisation du processeur, sous-module callgrind (granularité de la ligne source)
  • fuites de mémoire
  • construction de graphiques d'appels
  • certaines questions avancées comme la recherche de problèmes dans le mécanisme de verrouillage multithread

La sortie du callgrind peut être affichée visuellement via KCacheGrind.

1voto

Paul R Points 104036

De loin, le meilleur profileur pour Linux que je connaisse est Zoom . Bien qu'il s'agisse d'un produit commercial, il n'est pas trop cher et vous pouvez obtenir une licence d'évaluation gratuite de 30 jours sur demande.

0voto

Mike Dunlavey Points 25419

Comme le dit @Paul, donnez Zoom un essai.

Personnellement, j'utilise cette méthode qui fonctionne pour ces raisons et Zoom s'en approche. Il s'agit d'une technique qui certains programmeurs ont découvert indépendamment .

On m'a également dit qu'OProfile peut le faire, mais il faut savoir ce que l'on doit lui faire faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X