Wie kann ich meine Android-App profilieren? [geschlossen]


93

Ich muss herausfinden, wo die Engpässe in meiner Android-App liegen.

Welche Profiling-Tools oder -Techniken kann ich verwenden?


Ich bin nicht mit Android vertraut. Können Sie die App unter einem Debugger ausführen, den Sie unterbrechen können? In diesem Fall
Mike Dunlavey

Mmm, interessant. Ein bisschen arbeitsintensiv, aber möglicherweise nützlich, um die offensichtlicheren Leistungsprobleme zu erkennen. Vielen Dank.
teedyay

Ich verstehe, wie Sie so denken könnten: stackoverflow.com/questions/2624667/…
Mike Dunlavey

Heutzutage können Sie in Eclipse eine gute Profilerstellung durchführen. Vergessen Sie das eigenständige / manuelle Starten von TraceView usw. Ich hoffe, dass ich einen Blog-Artikel darüber mit weiteren Details schreiben kann. Pingen Sie mich an, wenn Sie weitere Details benötigen.
KarolDepka

2
Sie schlagen vor, dass es etwas Besseres als TraceView oder DDMS gibt. Was ist es?
Peri Hartman

Antworten:


37

Sie können Traceview verwenden. Es ist alles andere als ideal, funktioniert aber. Dieser Artikel beschreibt die Verwendung.


2
Wenn ich dies ausführe, heißt es, dass die Befehlszeilenversion veraltet ist und dann beendet wird. Was ist die neue Methode?
Gonzobrains


11

Es hängt davon ab, was Sie testen werden.

Wenn Sie Anwendungen für Android entwickeln, sollten Sie die TimingLogger-Klasse ausprobieren. Schauen Sie sich diesen Artikel an , der die Verwendung der TimingLogger-Hilfsklasse beschreibt.

Ein sehr gutes Tool ist JMeter und es gibt auch ein Plugin für Android .

Wenn Sie keine externen Tools verwenden möchten, sondern eine sehr standardmäßige Methode zum Messen der verstrichenen Zeit, müssen Sie System.nanoTime () verwenden. Sie sollten currentTimeMillis nicht verwenden, da es die Wanduhrzeit misst und da keine Computeruhr perfekt ist (alle müssen gelegentlich korrigiert werden). Es gibt einen Prozess, der ausgeführt wird und kontinuierlich kleine Korrekturen an der Systemuhr vornimmt. Ganz zu schweigen von der Schaltsekundenkorrektur.

Obwohl currentTimeMillis häufig verwendet wird, ist es immer noch falsch, die verstrichene Zeit und das abgelaufene Timing zu messen. Da der Aufruf einige Zeit in Anspruch nimmt, sollten Sie jedoch nicht damit rechnen, sehr, sehr kleine Intervalle korrekt zu messen. Aber das sollte kein Problem sein, wenn man mit Android arbeitet.

Ich zeige Ihnen ein Beispiel:

long startTime = System.nanoTime();

// run/call the method

long endTime = System.nanoTime();
long diff = endTime - startTime ;
System.out.println("Elapsed milliseconds: " + diff /1000000);

Sie können sich auch diese kostenlose Bibliothek ansehen: http://jetm.void.fm/ .

Dort finden Sie auch ein Tutorial für JMeter .


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.