Python Profiling - Was sind die Spalten in der Ausgabe von runnsnakerun?

8

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

  1. Anrufe - Anzahl der Anrufe?
  2. Datei - Datei, in der die Funktion gespeichert ist
  3. Zeile - Zeile in Datei, in der die Funktion definiert ist
  4. Directory - Verzeichnis der Datei mit Funktionsdefinition

Diejenigen, bei denen ich mich nicht wohl fühle, sind der Rest:

  1. RCalls
  2. Lokal
  3. / Anrufen
  4. Sperma
  5. / Anrufen

Danke

    
evan54 02.05.2014, 02:46
quelle

2 Antworten

5

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.

%Vor%

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.

%Vor%

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.

%Vor%

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.

%Vor%

Für alllocal ist der / call sowohl lokal als auch kumulativ sehr groß, da diese Funktion so teuer ist und alle Kosten lokal sind.

%Vor%

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.

%Vor%

Die Definition für recursive ist der Vollständigkeit halber vorgesehen.

%Vor%

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.

    
Henry Crutcher 08.01.2015, 23:05
quelle
6

Hier ist mein Verständnis:

  • RCalls Anzahl der rekursiven Aufrufe
  • Local Gesamtzeit für lokale Ausführung (ohne eine andere Methode aufzurufen)
  • /Call Lokale Zeit pro Anruf
  • Cum Gesamte kumulierte Zeit
  • /Call Kumulierte Zeit pro Anruf
interskh 10.06.2014 02:41
quelle

Tags und Links