Sie könnten etwas über die Leistung lernen.
Einer ist, dass es Code gibt, den Sie ändern können (manchmal "Ihr Code" genannt) und Code, den Sie nicht ändern können, wie Bibliothekscode mit all dem Pthread und Unwind-Zeug. Das letzte, was letzteres tun kann, ist vielleicht geben Sie einen entfernten Hinweis darüber, was in Ihrem Code dauern kann. Es ist wahrscheinlicher, Sie entweder mystifiziert zu lassen oder einen falschen Weg zu erkunden.
Eine andere ist, dass "Self-Time" selten nützlich ist. In allen außer den einfachsten Spielzeugprogrammen geht der Befehlszeiger des Computers nicht sehr weit in Ihrem Code vor dem Aufruf einer Unterroutine (Funktion, Methode, wie auch immer es genannt wird). Dann geht es in dieser Routine nicht sehr weit vor einem anderen Aufruf. Sie werden also sehen, dass es in Ihrem Programm nicht viel zu tun gibt, wenn Sie viel Eigenzeit haben.
Eine andere ist, dass die Genauigkeit der Messung nicht wirklich wichtig ist. Wenn ein Programm ein Faktor wie 100 ist, langsamer als es sein wird, nachdem es behoben ist, was bedeutet das? Das bedeutet, dass normalerweise nur 1 von 100 Nanosekunden in Richtung der Ziellinie verbracht wird. Die anderen 99 machen etwas nutzlos, wenn du wüsstest, was es ist, würdest du es leicht als nutzlos erkennen, also würdest du es loswerden. SO, wenn Sie das Programm unter einem IDE oder Debugger ausführen, und klicken Sie einfach auf die Schaltfläche "Pause", um es zu einem zufälligen Zeitpunkt zu stoppen, was ist die Chance, dass Sie es sehen, die nutzlose Sache zu tun? Praktisch sicher - die Wahrscheinlichkeit, dass es in der 1% ist, ist 1%. Wenn Sie nicht sicher sind, ob es in der 1% ist, tun Sie es erneut. Was ist die Chance, dass es wieder in der 1% - 1% im Quadrat oder 0,0001 ist. So ist die Wahrscheinlichkeit, dass Sie den Geschwindigkeitsfehler gesehen haben, fast sicher. Das ist zwei Proben, nicht Tausende.
Verallgemeinern, angenommen, nur 30% werden verschwendet. Dann ist die Anzahl der Proben, im Durchschnitt, benötigt, um das Problem zweimal zu sehen ist 2/30% oder 6,67 Proben. Normalerweise gibt es mehrere Probleme, so dass Sie jedes Mal, wenn Sie einen Fehler beheben, einen Beschleunigungsfaktor erhalten, und der von den anderen eingenommene Prozentsatz wächst um diesen Faktor. Das bedeutet, dass Sie schließlich zu denen kommen, die zuerst klein waren.
Das ist das Prinzip hinter random pausing, die Methode, die viele Menschen und ich verwenden, und es ist sehr effektiv.