Comment puis-je profiler mon application Android? [fermé]

93

J'ai besoin de trouver où se trouvent les goulots d'étranglement dans mon application Android.

Quels outils ou techniques de profilage puis-je utiliser?

teedyay
la source
Je ne connais pas Android. Pouvez-vous exécuter l'application sous un débogueur que vous pouvez interrompre? Si tel est le cas, cette méthode fonctionne: stackoverflow.com/questions/375913/…
Mike Dunlavey
Mmm, intéressant. Un peu laborieux, mais potentiellement utile pour repérer les problèmes de performances les plus criants. Merci.
teedyay
Je comprends comment vous pourriez penser ainsi: stackoverflow.com/questions/2624667/…
Mike Dunlavey
De nos jours, vous pouvez faire de jolis profils dans Eclipse. Oubliez le lancement autonome / manuel de TraceView, etc. J'espère écrire un article de blog à ce sujet, avec plus de détails. Envoyez-moi un ping si vous avez besoin de plus de détails.
KarolDepka
2
Vous suggérez qu'il y a quelque chose de mieux que TraceView ou DDMS. Qu'Est-ce que c'est?
Peri Hartman

Réponses:

37

Vous pouvez utiliser Traceview. C'est loin d'être idéal, mais ça marche. Cet article explique comment l'utiliser.

ciment
la source
2
Lorsque je l'exécute, cela indique que la version de ligne de commande est obsolète, puis elle se ferme. Quelle est la nouvelle méthode?
gonzobrains
18

DDMS est le meilleur pour Android. Par défaut, il est inclus avec le plugin ADT.

Ce document avec un exemple détaillé devrait vous aider à gérer le DDMS.


Pour l'analyse de la mémoire, essayez Eclipse MAT

Shahul3D
la source
4
Documentation
11

Cela dépend de ce que vous allez tester.

Si vous développez des applications pour Android, vous devriez essayer la classe TimingLogger. Jetez un œil à cet article décrivant l'utilisation de la classe d'assistance TimingLogger.

Un très bon outil est JMeter et il existe également un plugin pour Android .

si vous ne souhaitez pas utiliser d'outils externes, mais d'une manière très standard, pour mesurer le temps écoulé, vous devez utiliser System.nanoTime (). Vous ne devriez pas utiliser currentTimeMillis, car il mesure l'heure de l'horloge murale et, comme aucune horloge d'ordinateur n'est parfaite (elles doivent toutes parfois être corrigées), il y a un processus qui s'exécute et émet continuellement de petites corrections à l'horloge système. Sans parler de la deuxième correction intercalaire.

Bien que currentTimeMillis soit souvent utilisé, il est toujours incorrect de mesurer le temps écoulé et la synchronisation. Quoi qu'il en soit, comme l'appel prend un certain temps, vous ne devez pas vous attendre à chronométrer correctement de très très petits intervalles. Mais cela ne devrait pas être un problème avec Android.

Je vais vous montrer un exemple:

long startTime = System.nanoTime();

// run/call the method

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

Vous pouvez également consulter cette bibliothèque gratuite: http://jetm.void.fm/ .

Vous pouvez également trouver un didacticiel pour JMeter .

David
la source