So Messen Sie die Gesamtzeit, in der eine Funktion?
Habe ich eine utility-Funktion, die ich vermute, frisst einen großen Teil meiner Anwendung Ausführung. Mit Zeit-Profiler", um die Aufrufliste betrachten, diese Funktion nimmt einen großen Teil der Ausführungszeit von jeder Funktion aus dem es aufgerufen wird. Da diese utility-Funktion aufgerufen, die aus vielen verschiedenen Quellen, ich habe Schwierigkeiten, zu bestimmen, ob, insgesamt ist dies die beste Verwendung von meiner Optimierung Zeit.
Wie kann ich auf die Gesamtzeit verbracht in dieser Funktion während der Programmausführung, unabhängig davon, wer es aufgerufen?
Zur Klarheit, ich will verbinden Sie die markierten Einträge mit allen anderen Aufrufe der Funktion in einem einzigen Eintrag:
Ich code hinzufügen können, aber ich würde gerne eine Instrumenten-einzige Lösung.
InformationsquelleAutor user664939 | 2014-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für mich, was funktioniert der trick ist, das Häkchen bei "Invert" Call Tree". Es scheint die Art "Blatt" Funktionen in der aufrufstruktur um diejenigen, kumulieren die meiste Zeit, und damit Sie sehen, was Sie aufruft.
Die checkbox finden Sie im rechten Bedienfeld namens "Einstellungen Anzeigen" (Wenn nicht sichtbar: ⌘2 oder Ansicht->Inspektoren->Show-Display-Einstellungen)
InformationsquelleAutor Alexis Bauchu
Ich bin mir nicht bewusst eine Instrumenten-basierte Lösung, aber hier ist etwas, das Sie tun können von code. Hoffe, jemand bietet eine Instrumenten-Lösung, aber bis dahin bekommen Sie hier geht.
InformationsquelleAutor SayeedHussain
Sehen die Summen, die für eine bestimmte Funktion, gehen Sie folgendermaßen vor:
Wenn Ihr Programm ist multithreaded und Sie möchten eine Summe über alle threads, stellen Sie sicher, dass "Separate by Thread' ist nicht aktiviert.
InformationsquelleAutor SimonD
Kann ich Ihnen das Zeug die Antwort, die Sie suchen, aber habe Sie nicht bekommen, diese arbeiten innerhalb der Instrumente noch...
Instrumente verwendet
dtrace
unter der Haube.dtrace
können Sie auf Ereignisse reagieren, die in Ihrem Programm wie eine Funktion eingegeben werden oder zurückgegeben werden. Die Reaktion auf jedes Ereignis kann ein Skript erstellt werden.Können Sie erstellen Sie ein benutzerdefiniertes instrument mit scripting in Instrumente.
Hier ist ein noddy-shell-Skript, startet dtrace außerhalb von Instrumenten und Aufzeichnungen, die die Zeit in einer bestimmten Funktion.
Was ich hab noch nicht herausgefunden, wie die übertragung dieser in die Instrumente und die Ergebnisse erscheinen in einer nützlichen Art und Weise, in der GUI.
InformationsquelleAutor SimonD
Ich denke, Sie können call system("time ls"); zweimal, und es wird nur für Sie arbeiten. Die Ausgabe wird gedruckt werden auf die debug-Konsole.
InformationsquelleAutor Андрей Румянцев