Je cherche un profileur afin de trouver le goulot d'étranglement de 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 Xbox360, et je l'ai trouvé très bien, mais ce n'est pas gratuit. Je connais Intel v-Tune, mais ce n'est pas gratuit non plus.
Réponses
Trop de publicités?AMD Code Analyst est gratuit, mais pas aussi avancé que VTune. Il y a aussi Sleepy , qui est très simple, mais fait le travail dans de nombreux cas.
Very Sleepy est un profileur de CPU C / C ++ pour les systèmes Windows. (gratuit)
Vous pouvez également utiliser GoogleTest , Testing Framework.
Proffy est assez cool: http://pauldoo.com/proffy/
Disclaimer: J'ai écrit ceci.
Il y a un instrumentant (fonction précise) générateur de profil pour les MS VC 7.1 et plus appelé MicroProfiler. Vous pouvez le trouver ici (x64) ou ici (x86). Il ne nécessite aucune des modifications ou des ajouts à votre code et est capable d'afficher en fonction des statistiques avec les appelants et les appelés en temps réel sans avoir besoin de la fermeture de l'application/l'arrêt du processus de profilage.
Il s'intègre avec VisualStudio, de sorte que vous pouvez facilement activer/désactiver le profilage d'un projet (exe pour le moment). Il est également possible de l'installer sur la machine propre, il n'a besoin que les informations de symbole être situé avec l'exécutable est profilée.
Cet outil est utile lors de la statistique rapprochement de l'échantillonnage de profileurs comme Très Somnolent n'est pas suffisant.
Une comparaison approximative montre, qu'il bat AQTime (lorsqu'elle est invoquée dans l'instrumentation, la fonction, le niveau de l'exécuter). Le programme suivant (optimisation), d'inlining désactivé) s'exécute trois fois plus vite avec micro-profiler de l'affichage des résultats en temps réel, qu'avec AQTime simplement de rassembler 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());
}
Microsoft a le Windows Performance Toolkit.
Il ne nécessite pas Vista, 2008, ou Win7