Simpleperf

Android Studio enthält ein grafisches Frontend in Simpleperf, das unter CPU-Aktivität mit CPU Profiler prüfen beschrieben wird. Die meisten Nutzenden bevorzugen diese anstelle von Simpleperf.

Wenn Sie lieber die Befehlszeile verwenden, ist Simpleperf ein vielseitiges Befehlszeilen-Tool zum Erstellen von CPU-Profilen, das im NDK für Mac, Linux und Windows enthalten ist.

Die vollständige Dokumentation finden Sie in der Readme-Datei von Simpleperf.

Tipps und Rezepte für Simpleperf

Wenn Sie gerade erst mit Simpleperf anfangen, finden Sie hier einige Befehle, die für Sie besonders nützlich sein könnten. Weitere Befehle und Optionen finden Sie in der Referenz zu Simpleperf-Befehlen und ‐Optionen.

Herausfinden, welche gemeinsam genutzten Bibliotheken am längsten dauern

Sie können diesen Befehl ausführen, um zu sehen, welche .so-Dateien den größten Prozentsatz der Ausführungszeit einnehmen (basierend auf der Anzahl der CPU-Zyklen). Dies ist ein guter erster Befehl, wenn Sie die Sitzung zur Leistungsanalyse starten.

$ simpleperf report --sort dso

Herausfinden, welche Funktionen am längsten ausgeführt werden

Sobald Sie ermittelt haben, welche gemeinsam genutzte Bibliothek die meiste Ausführungszeit in Anspruch nimmt, können Sie diesen Befehl ausführen, um den Prozentsatz der Zeit anzuzeigen, die für die Ausführung der Funktionen dieser .so-Datei aufgewendet wurde.

$ simpleperf report --dsos library.so --sort symbol

Prozentsatz der in Threads verbrachten Zeit ermitteln

Die Ausführungszeit in einer .so-Datei kann auf mehrere Threads aufgeteilt werden. Sie können diesen Befehl ausführen, um den Prozentsatz der Zeit zu sehen, die in jedem Thread verbracht wurde.

$ simpleperf report --sort tid,comm

Prozentsatz der Zeit ermitteln, die in Objektmodulen verbracht wurde

Nachdem Sie die Threads ermittelt haben, für die die meiste Ausführungszeit benötigt wird, können Sie mit diesem Befehl die Objektmodule isolieren, die in diesen Threads die längste Ausführungszeit benötigen.

$ simpleperf report --tids threadID --sort dso

Zusammenhänge zwischen Funktionsaufrufen

Eine Aufrufgrafik bietet eine visuelle Darstellung eines Stacktrace, den Simpleperf während der Profilerstellungssitzung aufzeichnet.

Mit dem Befehl report -g können Sie eine Aufrufgrafik ausgeben, um zu sehen, welche Funktionen von anderen Funktionen aufgerufen werden. Dies ist hilfreich, um festzustellen, ob eine Funktion selbst langsam ist oder ob eine oder mehrere der aufgerufenen Funktionen langsam sind.

$ simpleperf report -g

Sie können auch das Python-Skript report.py -g verwenden, um ein interaktives Tool zu starten, das Funktionen anzeigt. Sie können auf jede Funktion klicken, um zu sehen, wie viel Zeit in den untergeordneten Elementen verbracht wird.

Profilerstellung für mit Unity erstellte Apps

Wenn Sie das Profil für eine Anwendung erstellen, die mit Unity erstellt wurde, müssen Sie die Anwendung mit Symbolen zum Debuggen erstellen. Gehen Sie dazu so vor:

  1. Öffnen Sie Ihr Android-Projekt im Unity-Editor.
  2. Achten Sie darauf, dass im Fenster Build Settings (Build-Einstellungen) für die Android-Plattform die Option Development Build (Entwicklungs-Build) aktiviert ist.
  3. Klicken Sie auf Player Settings (Player-Einstellungen) und setzen Sie die Eigenschaft Stripping Level auf Disabled.