Ich versuche, C ++ - Code auf meinem Mac (os x Lion) zu profilieren, und konnte nichts Nützliches finden. Ich suche einen Profiler, der mir sagt, welche Funktionen meine CPU-Zeit beanspruchen (ähnlich dem Matlab-Profiler).
Folgendes habe ich versucht
- gprof. Dies ist, was ich auf meinem Linux-Computer verwende, aber es gibt mir nur leere Ausgabe auf meinem Mac (anscheinend ein bekanntes Problem)
- Instrumente. Ich kann für mein ganzes Leben nicht herausfinden, wie ich irgendetwas in meiner kompilierten Binärdatei profilieren kann. Ich kann auch kein nützliches Tutorial finden.
- (Andere Suchanfragen ergaben, dass Shark nicht mehr verfügbar ist und Valgrind für die Erinnerung).
Wirklich dankbar für die Hilfe!
Antworten:
Instrumente ist das zu verwendende Werkzeug. Eine vollständige Erläuterung der Instrumente liegt außerhalb des Rahmens dieser Antwort. Hier ist jedoch eine Kurzanleitung:
Von den verfügbaren Tools sind die am häufigsten nützlichen:
Sie können einen Aufruf von auch
instruments
über die Befehlszeile starten :siehe Anleitung .
1 Eine einfache Möglichkeit, Instrumente zu öffnen, ist die Verwendung von Spotlight: Klicken Sie einfach auf die Lupe in der oberen rechten Ecke der Taskleiste (neben der Uhr) und geben Sie "Instrumente" ein.
2 Klicken Sie auf "Ziel auswählen ..." und navigieren Sie zum Pfad Ihrer ausführbaren Datei.
quelle
iprofiler
CLI-Tool zum Sammeln von Traces gelernt , die mit der Instruments-App angezeigt werden können. Es ist nicht leicht, es zu entdecken, daman -k profiler
es nicht in den Ergebnissen enthalten ist.instruments
. Beispiel:instruments -t "Time Profiler" ./a.out foo.txt 20
- Dies ist einfacher als das Festlegen von Argumenten und Arbeitsverzeichnissen in der GUI. Danach kann das Ergebnisinstrumentscli0.trace
über die Instruments-GUI geöffnet werden, oder sogar das (Öffnen in der GUI) kann über die Befehlszeile erfolgen:open -a Instruments instrumentscli0.trace
Instrumente ist das zu verwendende Werkzeug. Stellen Sie sicher, dass Sie Instrumente in XCode öffnen, um das Problem der leeren Traces zu beheben:
Wenn Sie Instrumente über ein altes Instrumentensymbol öffnen, das Sie vor der letzten Aktualisierung von XCode an Ihr Dock angeheftet haben, werden leere Spuren angezeigt.
quelle
Instrumente sind wirklich die richtige Antwort. Wenn Sie jedoch nicht herausfinden können, wie sie verwendet werden sollen, ist der Profiler in der integrierten Aktivitätsüberwachungsanwendung eine weitere Option. Im Aktivitätsmonitor können Sie Informationen zu jedem laufenden Prozess abrufen und es gibt eine Schaltfläche, mit der Sie die Ausführung für eine Weile testen können. Sie müssen Ihr Programm starten, zum Aktivitätsmonitor wechseln, den Prozess suchen und ihn dann testen.
Darüber hinaus können Sie die Profilerstellung für arme Männer durchführen, indem Sie das Programm einfach in einem Debugger ausführen und es etwa ein halbes Dutzend Mal manuell anhalten und den Aufrufstapel zu diesen Zeiten notieren. Es ist sehr einfach, funktioniert aber überraschend gut als erster Durchgang für einen erheblichen Teil der Programme.
Es gibt auch ein Befehlszeilenprogramm,
sample
das den Callstack wie die anderen abtastet.quelle