6 Stimmen

Was sind "unstacked calls in outer" in Perl's Devel::DProf?

Ich erstelle ein Profil einer Perl-Anwendung mit perl -d:DProf . Bei der Ausführung dprofpp auf die resultierende tmon.out Datei, erhalte ich Warnungen wie diese:

Compress::Zlib::__ANON__ has 5 unstacked calls in outer
Compress::Zlib::AUTOLOAD has -5 unstacked calls in outer
  • Was ist ein ungestapelter Aufruf?
  • Wer oder was ist "außen"?
  • Was bedeuten die Zahlen? Wie kann es eine negative Anzahl von Anrufen geben?
  • Sollte ich mir Sorgen machen?

9voto

Adam Bellaire Punkte 103525

Ich werde es ausprobieren:

  • Nicht gestapelte Aufrufe deuten darauf hin, dass DProf bei der Analyse des Profils auf mehr (oder weniger) Aufrufe auf dem Stack (im Profil) gestoßen ist als erwartet, was bedeutet, dass die Profildaten falsch sind.
  • "outer" bezieht sich auf die interne Variable %outer in DProf, das (anscheinend) die Stapelanzahl bei der Analyse eines Profils verfolgt.
  • Die Zahlen geben an, wie viele Aufrufe DProf zu finden erwartete und wie viele es fand. 5 bedeutet, dass es mehr Anrufe gibt als erwartet, -5 bedeutet, dass es 5 weniger sind. Dies liegt wiederum daran, dass die Profildaten beschädigt sind.
  • Ich würde mir keine Sorgen um die Integrität Ihres Codes machen, da dies AFAIK zufolge auf Fehler in der Implementierung von DProf selbst zurückzuführen ist. Es scheint, dass DProf verwirrt wurde, als es die tmon.out Datei. Der Rest der Ergebnisse aus dprofpp kann aufgrund dieser Ungenauigkeit unzuverlässig sein. Sie sollten sich also (ein wenig) um die Genauigkeit dieser Ergebnisse sorgen.

Vielleicht möchten Sie sich ein anderes Modul zur Profilerstellung ansehen, z. B. Devel::NYTProf

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X