Profilage c++ sous mac os x
Je suis d'essayer de profil en c++ code sur mon mac (os x Lion) et je n'ai pas été en mesure de trouver quelque chose d'utile. Je suis à la recherche d'un profiler qui va me dire quelles sont les fonctions prenant mon temps cpu (similaire à matlab profiler).
Voici ce que j'ai essayé
- gprof. C'est ce que j'utilise sur ma machine linux, mais il me donne juste une sortie vide sur mon mac (apparemment un problème connu)
- Instruments. Je ne peux pas pour la vie de me comprendre comment le profil de rien dans mon binaires compilés. Je ne peux trouver toute sorte d'utile tutoriel.
- (autre recherche a révélé le Requin, qui n'est plus disponible et Valgrind qui est de la mémoire).
Apprécie vraiment l'aide!
- Vous pouvez essayer de ceci, en ces raisons.
- MikeDunlavey commentaire est obliquement ce qui suggère que vous ouvrez votre programme de gdb (ou certains autres débogueur, si vous pouvez comprendre comment) et manuellement l'interrompre à intervalles réguliers, essentiellement simuler ce gprof/Instruments pour vous, mais avec plus d'effort mental. Suffit d'utiliser les Instruments de la place; voir @duskwuff la réponse ci-dessous à l'étape par étape les instructions.
- Mes obliques suggestion trouve speedup possibilités que gprof/Instruments ne le font pas. Instruments des échantillons de la pile d'appel, mais aussi loin que je peux dire, il ne vous permet pas réellement d'examiner des échantillons de la pile, qui est de savoir comment vous trouver les accélérations. Plutôt (si je ne me trompe) qu'il achète dans le concept de "hot chemin", et à la non-jouet de programmes de taille décente, de gros problèmes peuvent facilement se cacher de la hot chemin.
- Voici comment construire le hot chemin. Prendre tous les échantillons en passant par principal (100%). De ces, de trouver la routine la plus-appelée main, (appelons-la Une) et supposons qu'il est sur 30% des échantillons. D'autres fonctions pourraient être à l'autre de 70%, mais chaque appelée inférieur à A. De ces échantillons, trouver la routine la plus-disant de l'appeler B), et supposons qu'il est à 30% de ces échantillons. OK, donc la séquence principale-A-B est sur 30% x 30% = 9% des échantillons. De rien d'extérieur que 9% n'est pas remarqué. Vous pouvez dire qu'après quelques niveaux, il y a beaucoup de choses que vous ne voyez pas.
- iprofiler de BSD est de nice depuis sa sortie peut être ouvert dans les Instruments.
Vous devez vous connecter pour publier un commentaire.
Instruments est l'outil à utiliser. Une explication complète des Instruments est en dehors de la portée de cette réponse, mais voici un guide de démarrage rapide:
Des outils disponibles, celles qui seront les plus fréquemment utiles sont:
1 Un moyen facile d'ouvrir des Instruments à utiliser Spotlight: il suffit de cliquer sur la loupe dans le coin supérieur droit de la barre des tâches (à côté de l'horloge) et de type "Instruments".
2 Cliquez sur "Choisir une Cible..." et parcourir le chemin de l'exécutable.
iprofiler
CLI outil pour collecter des traces qui peuvent être consultés à l'aide des Instruments d'application. Il n'est pas facile de le découvrir depuisman -k profiler
ne pas l'inclure dans les résultats.Instruments est vraiment la bonne réponse, mais si vous ne pouvez pas comprendre comment utiliser, puis une autre option est le profiler intégrée à l'application Moniteur d'Activité. Dans le Moniteur d'Activité vous pouvez obtenir des informations sur tous les processus en cours d'exécution et il y a un bouton à l'exemple de son exécution pendant un certain temps. Vous devrez commencer votre programme, commutateur pour Moniteur d'Activité, le processus, puis de prélever l'échantillon.
En outre, vous pouvez faire "pauvre homme profilage" simplement en exécutant le programme en un débogueur et la mise en pause manuellement une demi-douzaine de fois, et en notant la pile d'appel à ces moments. C'est très simple, mais il fonctionne étonnamment bien comme une première passe pour une fraction importante des programmes.
Instruments est l'outil à utiliser.
Pour surmonter le problème de la vierge de traces, assurez-vous que vous ouvrez Instruments de dans XCode:
Si vous ouvrez Instruments à partir d'un vieux Instruments icône que vous avez épinglé à votre dock avant la dernière mise à jour de XCode, il vous donnera la vierge de traces.