Come posso profilare la mia app Android? [chiuso]


93

Devo trovare dove si trovano i colli di bottiglia nella mia app Android.

Quali strumenti o tecniche di profilazione posso utilizzare?


Non ho familiarità con Android. Puoi eseguire l'app con un debugger che puoi interrompere? Se è così, questo metodo funziona: stackoverflow.com/questions/375913/...
Mike Dunlavey

Mmm, interessante. Un po 'laborioso, ma potenzialmente utile per individuare i problemi di prestazioni più evidenti. Grazie.
teedyay

Capisco come si potrebbe pensare così: stackoverflow.com/questions/2624667/...
Mike Dunlavey

Al giorno d'oggi puoi fare un bel profiling all'interno di Eclipse. Dimentica l'avvio autonomo / manuale di TraceView, ecc. Spero di scrivere un articolo sul blog a riguardo, con maggiori dettagli. Ping me se hai bisogno di maggiori dettagli.
KarolDepka

2
Suggerisci che c'è qualcosa di meglio di TraceView o DDMS. Che cos'è?
Peri Hartman

Risposte:


37

Puoi usare Traceview. È tutt'altro che ideale, ma funziona. Questo articolo descrive come usarlo.


2
Quando lo eseguo, dice che la versione della riga di comando è deprecata e quindi esce. Qual è il nuovo metodo?
gonzobrains


11

Dipende da cosa testerai.

Se sviluppi applicazioni per Android dovresti provare la classe TimingLogger. Dai un'occhiata a questo articolo che descrive l'uso della classe helper TimingLogger.

Uno strumento molto buono è JMeter e c'è anche un plugin per Android .

se non si desidera utilizzare strumenti esterni, ma un modo molto standard per misurare il tempo trascorso, è necessario utilizzare System.nanoTime (). Non dovresti usare currentTimeMillis, perché misura il tempo dell'orologio da parete e, poiché nessun orologio del computer è perfetto (tutti occasionalmente devono essere corretti) c'è un processo che viene eseguito e fornisce continuamente piccole correzioni all'orologio di sistema. Per non parlare della correzione del secondo intercalare.

Sebbene currentTimeMillis venga spesso utilizzato, non è ancora corretto misurare il tempo e il tempo trascorso. Comunque, poiché l'invocazione richiede un po 'di tempo, non dovresti aspettarti di cronometrare correttamente intervalli molto piccoli. Ma questo non dovrebbe essere un problema lavorando con Android.

Ti mostro un esempio:

long startTime = System.nanoTime();

// run/call the method

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

Potresti dare un'occhiata anche a questa libreria gratuita: http://jetm.void.fm/ .

Puoi anche trovare tutorial per JMeter .


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.