Quel est le meilleur profileur C ++ gratuit pour Windows? [fermé]


224

Je cherche un profileur afin de trouver le goulot d'étranglement dans mon code C ++. J'aimerais trouver un outil de profilage gratuit, non intrusif et efficace. Je suis développeur de jeux et j'utilise PIX pour Xbox 360 et je l'ai trouvé très bon, mais ce n'est pas gratuit. Je connais Intel VTune , mais ce n'est pas gratuit non plus.


VTune semble désormais gratuit: software.intel.com/en-us/vtune . J'ai téléchargé l'édition communautaire et elle fait un excellent travail sur le profilage C ++ ainsi que le code C # géré
Dr. ABT

1
Comment est-ce hors sujet? Les outils de développement sont sur le sujet pour autant que je sache. Il est cependant basé sur l'opinion.
Nic Szerman

Réponses:


135

CodeXL a maintenant remplacé l' analyste de code AMD de fin de ligne et les deux sont gratuits, mais pas aussi avancés que VTune. Il y a aussi Sleepy , qui est très simple, mais fait le travail dans de nombreux cas.



1
J'ai essayé de travailler avec maintenant, et je n'ai pas aimé du tout. Je ne pouvais même pas comprendre comment obtenir le temps total de la fonction% (y compris les callees) que TrueTime pouvait bien faire il y a 10 ans.
Pavel Radzivilovsky

J'ai écrit une adaptation de sleepy qui ne dépend pas de wxWidgets mais s'exécute en ligne de commande. Vous l'exécutez pendant une période de temps par rapport à un processus en cours, puis lorsque vous l'arrêtez, vous obtenez les statistiques de ce que le processus passait son temps à faire. Il est non intrusif dans la mesure où vous n'avez pas à modifier votre code de quelque manière que ce soit pour l'utiliser, mais il suspend vos threads pendant qu'il lit les piles d'appels. Vous avez également besoin des fichiers pdb disponibles pour obtenir une sortie significative, mais je suppose que cela s'applique à n'importe quel profileur.
CashCow

Je recommanderais d'essayer xperf, je l'ai trouvé supérieur à l'analyste de code AMD.
MW_dev

1
CodeAnalyst ne recevra plus de mises à jour, à l'exception des corrections de bogues critiques. Ils sont passés à CodeXL. Voici le lien pour que vous puissiez mettre à jour votre réponse. Et merci de m'avoir laissé parler de CodeAnalyst / XL, au fait.
Adri CS

61

Very Sleepy est un profileur CPU C / C ++ pour les systèmes Windows (gratuit).
CppCheck est un profileur CPU C / C ++ statique pour les systèmes Windows (gratuit).


20
googletest est un framework de tests unitaires. Comment utiliseriez-vous cela pour effectuer le profilage?
greatwolf

Si vous utilisez un binaire Windows de la pile gcc, c'est un excellent choix - AMD CodeAnalyst ne reconnaît pas les symboles gcc sous Windows, mais très endormi!
Mike


17

Il existe un profileur d'instrumentation (précis pour les fonctions) pour MS VC 7.1 et supérieur appelé MicroProfiler. Vous pouvez l'obtenir ici (x64) ou ici (x86) . Il ne nécessite aucune modification ou ajout à votre code et est capable d'afficher des statistiques de fonction avec les appelants et les callees en temps réel sans avoir besoin de fermer l'application / d'arrêter le processus de profilage.

Il s'intègre à VisualStudio, vous pouvez donc facilement activer / désactiver le profilage pour un projet. Il est également possible de l'installer sur la machine propre, il suffit que les informations de symbole soient localisées avec l'exécutable en cours de profilage.

Cet outil est utile lorsque l'approximation statistique des profileurs d'échantillonnage comme Very Sleepy n'est pas suffisante.

Une comparaison approximative montre qu'elle bat AQTime (lorsqu'elle est invoquée dans l'instrumentation, exécution au niveau de la fonction). Le programme suivant (optimisation complète, inlining désactivé) s'exécute trois fois plus rapidement avec un micro-profileur affichant les résultats en temps réel, qu'avec AQTime qui collecte simplement des statistiques:

void f()
{
    srand(time(0));

    vector<double> v(300000);

    generate_n(v.begin(), v.size(), &random);
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
    sort(v.begin(), v.end());
    sort(v.rbegin(), v.rend());
}

1
Il est facile à utiliser et profileur ultra-rapide. Un seul problème que je n'ai pas résolu est un problème qui, une fois le débogage terminé, la fenêtre du profileur ne s'est pas fermée automatiquement et vous devez la tuer via le gestionnaire de tâches (sans cela, vous ne pouvez pas recompiler votre projet).
Ludek Vodicka

1
J'ai constaté qu'après avoir fermé mon application par le bouton FERMER normal, la fenêtre du profileur peut également être fermée régulièrement. Mais lorsque je quitte l'application par le raccourci MAJ + F5 (commande Arrêter le débogage VS), le bouton de fermeture de la fenêtre du profileur est désactivé.
Ludek Vodicka

Ne fonctionne pas avec VS 2015.
rustyx

1
Fixé à partir du 1.1.590. Voir les mises à jour sur la page Galerie de Visual Studio ( visualstudiogallery.msdn.microsoft.com/… )
Arty

1
C'est vraiment très bien! Devrait être classé bien plus haut! Super simple à installer et à exécuter, et vous donne la plupart de ce que vous devez savoir. Mon deuxième choix est Windows Performance Analyzer: geekswithblogs.net/akraus1/archive/2015/04/21/163342.aspx
Steve


7

Un nouvel ajout est Shiny .

La


3
Impossible de trouver des fichiers binaires téléchargeables, juste des codes source. Pas très pratique.
Mgr

5

Je recommande fortement Windows Performance Toolkit (WPT) ou XPERF

L'outil de ligne de commande xperf en ligne de commande enregistre les journaux de suivi des événements pour Windows (ETW) qui peuvent être analysés à l'aide de l'outil GUI xperfview.

L' utilisation de l'argument de ligne de commande stacktrace s'est révélée être un outil inestimable pour mon entreprise car elle définit et résout les goulots d'étranglement. L'une des choses les plus convaincantes est que le WPT peut être installé dans n'importe quel environnement, même sur le vénérable Windows XP .

Sous Windows 8, l'Analyseur de performances Windows place xperf à un niveau encore plus élevé.

Les chiffres et les statistiques fournis dans les journaux ETW sont inégalés en détail, à l'exception de Visual Studio Profiler (2010/2012), qui est également génial mais pas gratuit AFAIK.

Si vous n'avez jamais utilisé xperf ... vous ne savez pas ce qui vous manque


1
Eh bien, je sais qu'il me manque une URL de travail sur le site.
Tomáš Zato - Rétablir Monica

3

J'utilise AQTime, c'est l'un des meilleurs outils de profilage que j'ai jamais utilisé. Ce n'est pas gratuit mais vous pouvez obtenir un essai de 30 jours, donc si vous prévoyez d'optimiser et de profiler un seul projet et que 30 jours vous suffisent, je vous recommande d'utiliser cette application. ( http://www.automatedqa.com/downloads/aqtime/index.asp )


Seul cet outil m'a aidé à profiler une application Web mixte (managée et native) en mode de version sur IIS.
Mgr

Il est regrettable qu'ils ne soutiennent pas les personnes qui essaient d'évaluer leur produit.
Lucky Luke

Actuellement, ils offrent un essai de 14 jours avec des fonctionnalités limitées.
Max



0

J'ai utilisé "TrueTime - qui fait partie de la suite DevPartner de Compuware depuis des années. Il existe une [version gratuite] (vous pouvez essayer Compuware DevPartner Performance Analysis Community Edition.) Disponible.



0

Vous pouvez utiliser EmbeddedProfiler, c'est gratuit pour Linux et Windwos.

Le profileur est intrusif (par fonctionnalité) mais il ne nécessite aucune modification de code. Ajoutez simplement un drapeau de compilateur spécifique (-finstrument-functios pour gcc / MinGW ou / GH pour MSVC) et liez la bibliothèque du profileur. Il peut vous fournir une arborescence d'appels complète ou simplement une liste de fonctions. Il a sa propre interface graphique d'analyseur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.