2008-09-15 6 views
200

Je suis à la recherche d'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 un développeur de jeux, et j'utilise PIX pour Xbox   360 et je l'ai trouvé très bien, mais ce n'est pas gratuit. Je connais l'Intel VTune, mais ce n'est pas gratuit non plus.Quel est le meilleur profileur C++ gratuit pour Windows?

Répondre

124

CodeXL a désormais remplacé le AMD Code Analyst de fin de ligne et les deux sont gratuits, mais pas aussi avancés que VTune. Il y a aussi Sleepy, ce qui est très simple, mais fait le travail dans de nombreux cas.

+4

Voici le lien pour CodeAnalyst: http://developer.amd.com/CPU/CODEANALYST/Pages/default. aspx – epotter

+1

J'ai essayé de travailler avec ça 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 appels) que TrueTime pouvait faire il y a 10 ans. –

+0

J'ai écrit une adaptation de sleepy qui ne dépend pas de wxWidgets mais qui s'exécute dans la ligne de commande. Vous l'exécutez pendant un certain temps contre 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 le sens où vous n'avez pas besoin de modifier votre code pour l'utiliser, mais il suspend vos threads lorsqu'il lit les piles d'appels. Vous avez également besoin des fichiers pdb disponibles pour que vous puissiez obtenir une sortie significative, mais je suppose que cela s'applique à n'importe quel profileur. – CashCow

1

Je l'ai utilisé « TrueTime -.. Une partie de la suite DevPartner de Compuware pendant des années Il y a une [version gratuite] (. Vous pouvez essayer Compuware DevPartner Performance Analysis Community Edition) disponible

3

J'utilise AQtime, il est l'un Ce n'est pas gratuit, mais vous pouvez obtenir un essai de 30 jours, donc si vous envisagez d'optimiser et de profiler seulement un projet et 30 jours vous suffisent, alors je vous recommande d'utiliser cette application. (http://www.automatedqa.com/downloads/aqtime/index.asp)

+0

Seul cet outil m'a aidé à profiler compilé en mode mixte version (géré et natif) de l'application Web sur IIS. – Monsignor

+0

Il est regrettable qu'ils ne soutiennent pas les gens qui essaient d'évaluer leur produit. –

+0

Actuellement, ils offrent un essai de 14 jours avec une fonctionnalité limitée. – Max

10

Microsoft a Windows Performance Toolkit.

Il ne nécessite de Windows Vista  , Windows Server 2008 ou Windows   7.

+2

Ce n'est pas gratuit :( –

+4

Comment est-ce que ce n'est pas gratuit? Il fait partie du SDK Windows.J'ai pu le télécharger sans aucun problème. (Certes, nous avons un abonnement MSDN, donc certaines personnes peuvent avoir une expérience différente – epotter

+1

Gratuit ou non, le lien ne fonctionne plus correctement –

0

J'utilise VSPerfMon qui est le StandAlone Visual Studio Profiler. J'ai écrit un outil graphique pour m'aider à l'exécuter et à regarder les résultats.

http://code.google.com/p/vsptree/

7

Un nouvel ajout est Shiny.

+3

Impossible de trouver des fichiers binaires téléchargeables, juste des codes sources – Monsignor

57

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

+19

googletest est un framework de tests unitaires Comment l'utiliser pour effectuer un profilage? – greatwolf

+0

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 il est très endormi! – Mike

2

Veuillez essayer mon profileur, appelé cRunWatch. Il ne s'agit que de deux fichiers, il est donc facile de l'intégrer à vos projets et nécessite d'ajouter exactement une ligne pour instrumenter un morceau de code.

http://ravenspoint.wordpress.com/2010/06/16/timing/

NÉCESSAIRE la bibliothèque Boost.

14

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

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

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

La comparaison brute montre qu'elle bat AQTime (lorsqu'elle est invoquée en instrumentation, exécution au niveau de la fonction). Le programme suivant (optimisation complète, inline désactivée) gère trois fois plus rapide avec micro profileurs l'affichage des résultats en temps réel, qu'avec AQtime simplement recueillir les 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()); 
} 
+0

Il est facile à utiliser et profiler très rapide. Je n'ai pas résolu est un problème que, après avoir terminé le débogage, fenêtre de profilage ne se ferme pas automatiquement et vous devez le tuer via le gestionnaire de tâches (sans cela vous ne pouvez pas recompiler votre projet). –

+0

J'ai trouvé qu'après avoir fermé mon application par le bouton CLOSE, la fenêtre du profileur peut être fermée aussi régulièrement. Mais lorsque je quitte l'application par un raccourci MAJ + F5 (Arrêt de la commande VS de débogage), le bouton de fermeture de la fenêtre du profileur est désactivé. –

+0

Ne fonctionne pas avec VS 2015. – rustyx

0

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

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

5

Je recommande fortement Windows Performance Toolkit (WPT) ou Xperf

La ligne de commande enregistrements outil de ligne de commande XPerf Event Tracing pour les journaux de Windows (ETW) qui peuvent être analysés à l'aide de l'outil de xperfview GUI.

L'utilisation de stacktrace command line arguement s'est avérée être un outil précieux pour mon entreprise car elle permet de dépister et de résoudre 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 .

Sur Windows 8, Windows Performance Analyzer prend xperf à un niveau encore plus élevé.

Les chiffres et statistiques fournis dans les journaux ETW sont sans précédent dans les détails, sauf pour Visual Studio profiler (2010/2012), qui est également excellent mais pas gratuit AFAIK.

Si vous ne l'avez jamais utilisé XPerf ... vous ne savez pas ce que vous manquez

+0

Eh bien, je sais que je manque d'URL de travail sur le site. –

Questions connexes