Das mag wirklich offensichtlich sein, aber ich wollte nur sicherstellen, dass ich verstehe, was die Spalten in runnsnakerun sind.
Name, Anrufe, RCalls, Lokal, / Anruf, Cum, / Anruf, Datei, Leitung, Verzeichnis
Hier sind einige, die ich glaube zu verstehen
Name - Name der aufgerufenen Funktion
Diejenigen, bei denen ich mich nicht wohl fühle, sind der Rest:
Danke
Der beste Weg, dies zu veranschaulichen, ist ein Beispiel: Angenommen, Sie haben das folgende Programm (das in profile.py gespeichert ist, aber zur besseren Übersichtlichkeit in einzelne Teile zerlegt ist):
%Vor% Anrufe ist einfach - wie oft wurde diese Funktion direkt aufgerufen. Wenn Sie die Elemente auf der linken Seite auswählen, ändern sich diese Zahlen natürlich entsprechend der Häufigkeit, mit der die Funktion von der ausgewählten Funktion aufgerufen wurde. manytinyfunction
wird 100.000 Mal aufgerufen, also werden Aufrufe 100.000 sein. tinyfunction
wird einmal aufgerufen, also werden seine Aufrufe 1 sein.
rcalls ist ähnlich, enthält jedoch auch Aufrufe, die während der Ausführung eines Anrufs ausgeführt wurden. Hinweis für recursive
, dass Aufrufe nur 10 sind, aber rcalls ist 1010 (Definition unten, aber es ruft sich selbst n-mal auf, wenn sein Argument n ist.
Auf ähnliche Weise enthält lokal die gesamte Zeit, die für die Funktion selbst aufgewendet wird, und zählt Aufrufe von anderen Funktionen nicht mit ein. Hier hat alllocal
hier einen großen Wert, aber allcumulative
hat hier nichts, da es seine Arbeit auf subfunction
fogt.
Der / Anruf neben dem lokalen bricht einfach den lokalen Wert oben pro Anruf ab, sodass manytinyfunction
insgesamt etwas Zeit hat, aber eine sehr, sehr kleine Zahl im lokalen / Anruf, da jeder Anruf ist wirklich billig.
Für alllocal
ist der / call sowohl lokal als auch kumulativ sehr groß, da diese Funktion so teuer ist und alle Kosten lokal sind.
Der / Aufruf neben kumulativ ist derselbe wie der Aufruf / für local, außer dass, wie kumulativ selbst, die vollständigen Kosten aller Aufrufe aus der Funktion selbst enthalten sind. Die lokale / Rufnummer war also klein für allcumulative
, aber groß für alllocal
. Nicht so für den kumulativen Aufruf, der in beiden Fällen gleich ist.
Die Definition für recursive
ist der Vollständigkeit halber vorgesehen.
Nach dem Profiling und dem Ausführen von runnsnake:
%Vor% Beachten Sie also, dass alllocal
sowohl für den lokalen als auch für den kumulativen Wert einen hohen Wert hat, wobei sich allcumulative
stark unterscheidet. Beachten Sie, dass recursive
in beiden Spalten gleich ist - Aufrufe an Sie selbst werden gezählt.
Mit der Schaltfläche Callees unten können Sie herausfinden, welche anderen Funktionen die ausgewählte Funktion aufruft. Mit Anrufern können Sie herausfinden, wer die ausgewählte Funktion aufruft.