2015-06-29 2 views
9

Kcachegrind dient als ein wunderbares Dienstprogramm, um den Hotspot beim Erstellen von Profiling-Code visuell auf die Quellzeilenebene darzustellen. Ich fand es sehr nützlich, wenn ich meine C++ - Code-Basis optimieren möchte. Für mein neuestes Python-Projekt begann ich Kcachegrind zu verwenden, um die Ausgabe von profilestats zu verarbeiten. Kcachegrind ist ein Linux-Dienstprogramm, aber verschiedene inoffizielle Ports sind verfügbar und ich verwende ist qcachegrind. Im Allgemeinen funktioniert es zu einem großen Teil und reicht für die meisten Probleme aus, außer dass es mir schwer fällt, die Quellenanmerkung zu erhalten.Quelltext kommentieren Python bei der Verwendung von qcachegrind zum Verarbeiten von profilestats output

auf der Registerkarte Quelle ich die vertraute Quelle fehlende Nachricht

There is no source available for the following function: 
    'main C:\Projects\module\src\source.py:397' 
This is because no debug information is present 
Recompile source and redo the profile run. 
The function is located in the ELF Object: 
    '(unknown)' 

Mit der Option

Settings -> Configure -> Source Annotation 

und das Hinzufügen der Quelle Basisverzeichnis war nicht sinnvoll grüßte mich ist.

Ich habe das Gefühl, dass das Dienstprogramm ein ELF-Objekt will, das für Python nicht relevant ist. Jede Hilfe in dieser Hinsicht wäre nützlich.

Relevante Informationen:

  • Python 2.7
  • profilestats (2,0)
  • QCachegrind 0.7.4
  • Windows-2012R2
+0

Scheint, wie 'profilestats' nicht die relevanten Daten in seinem Ausgang einschließlich werden. Haben Sie versucht, die Profiling-Ausgabe im "Python-Format" zu speichern und mit ['pyprof2calltree'] (https://pypi.python.org/pypi/pyprof2calltree/) zu konvertieren? – taleinat

Antwort

1

I zweite @taleniat Kommentar. Ich bin ein OSX-Benutzer. Ich hatte Probleme, qcachegrind zur Arbeit zu bringen, also habe ich pyprof2calltree benutzt und es funktioniert perfekt, inklusive Quellcode-Tab. YMMV.

Zuerst führen Sie Ihr Skript mit cProfile

python -m cProfile -o report.profile report.py

Dann können Sie pyprof2calltree starten qcachegrind (keine Notwendigkeit für Zwischenumwandlung) verwenden.

pyprof2calltree -k -i report.profile

durch die Art und Weise, Python 2.7.10 und 0.7.4 qcachegrind über Homebrew auf OSX installiert 10.11

Verwandte Themen