web-dev-qa-db-fra.com

Quel est le meilleur profileur C ++ gratuit pour Windows?

Je recherche 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 le trouve très bien, mais ce n'est pas gratuit. Je connais Intel VTune , mais ce n’est pas gratuit non plus.

218
ugasoft

CodeXL a maintenant remplacé la fin de ligne AMD Code Analyst et les deux sont libres, 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.

132
yrp

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

59
lsalamon

Proffy est assez cool: http://pauldoo.com/proffy/

Avertissement: j'ai écrit ceci.

34
pauldoo

Il existe un profileur d'instrumentation (fonction précise) pour MS VC 7.1 et versions ultérieures, appelé MicroProfiler. Vous pouvez l'obtenir ici (x64) ou ici (x86) . Il ne nécessite aucune modification ni aucun ajout à votre code et est capable d'afficher des statistiques de fonction avec les appelants et les correspondants dans en temps réel sans qu'il soit nécessaire de fermer l'application/d'arrêter le processus de profilage.

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

Cet outil est utile lorsque l’approximation statistique à partir de profileurs d’échantillonnage tels que Very Sleepy ne suffit pas.

Une comparaison approximative montre qu'il bat AQTime (lorsqu'il est appelé dans une exécution au niveau de l'instrumentation). Le programme suivant (optimisation complète, inline désactivée) s'exécute trois fois plus rapidement avec un micro-profileur affichant les résultats en temps réel qu'avec AQTime simplement en collectant 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());
}
17
Arty

Microsoft a le Windows Performance Toolkit .

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

10
epotter

Un nouvel ajout est Brillant .

Un séjour sans faille

7
Buggieboy

Je recommande fortement Windows Performance Toolkit (WPT) ou XPERF

L'outil de ligne de commande xperf en ligne de commande enregistre les journaux ETW (Event Tracing for Windows) qui peuvent être analysés à l'aide de l'outil xperfview de l'interface graphique.

L'utilisation de argument de ligne de commande stacktrace s'est révélée être un outil précieux pour mon entreprise, car elle établit des profils et élimine les goulots d'étranglement. 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 de Windows porte xperf à un niveau encore plus élevé.

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

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

5
MW_dev

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 avoir un essai de 30 jours, donc si vous prévoyez d'optimiser et de profiler un seul projet et que 30 jours suffisent, je vous recommande d'utiliser cette application. ( http://www.automatedqa.com/downloads/aqtime/index.asp )

3
dudico

S'il vous plaît essayez 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écessite la bibliothèque Boost.

2
ravenspoint

J'ai utilisé Luke Stackwalker et cela a fonctionné pour mon projet Visual Studio.

D'autres projets intéressants sont:

1
INS

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

0
Harold Ekstrom

Vous pouvez utiliser EmbeddedProfiler, gratuit pour Linux et Windwos.

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

0
Mi-La