¿Cómo puedo crear un perfil de mi aplicación de Android? [cerrado]

93

Necesito encontrar dónde están los cuellos de botella en mi aplicación de Android.

¿Qué herramientas o técnicas de creación de perfiles puedo utilizar?

teedyay
fuente
No estoy familiarizado con Android. ¿Puedes ejecutar la aplicación con un depurador que puedas interrumpir? Si es así, este método funciona: stackoverflow.com/questions/375913/…
Mike Dunlavey
Mmm, interesante. Un poco laborioso, pero potencialmente útil para detectar los problemas de rendimiento más evidentes. Gracias.
teedyay
Entiendo cómo puede pensar eso: stackoverflow.com/questions/2624667/…
Mike Dunlavey
Hoy en día puedes crear buenos perfiles dentro de Eclipse. Olvídese del lanzamiento autónomo / manual de TraceView, etc. Espero escribir un artículo de blog sobre eso, con más detalles. Hazme ping si necesitas más detalles.
KarolDepka
2
Sugieres que hay algo mejor que TraceView o DDMS. ¿Qué es?
Peri Hartman

Respuestas:

37

Puede utilizar Traceview. Está lejos de ser ideal, pero funciona. Este artículo describe cómo usarlo.

cemento
fuente
2
Cuando ejecuto esto, dice que la versión de la línea de comandos está en desuso y luego sale. ¿Cuál es el nuevo método?
gonzobrains
18

DDMS es el mejor para Android. De forma predeterminada, se incluye con el complemento ADT.

Este documento con un ejemplo detallado debería ayudarlo a lidiar con DDMS.


Para análisis de memoria, pruebe Eclipse MAT

Shahul3D
fuente
4
Documentos de Android sobre DDMS: developer.android.com/tools/debugging/ddms.html
sulai
11

Depende de lo que vayas a probar.

En caso de que desarrolle aplicaciones para Android, debería probar la clase TimingLogger. Eche un vistazo a este artículo que describe el uso de la clase auxiliar TimingLogger.

Una muy buena herramienta es JMeter y también hay un complemento para Android .

Si no desea utilizar herramientas externas, sino una forma muy estándar, para medir el tiempo transcurrido, debe utilizar System.nanoTime (). No debe usar currentTimeMillis, porque mide el tiempo del reloj de pared y, ya que ningún reloj de computadora es perfecto (todos ocasionalmente necesitan ser corregidos), hay un proceso que se ejecuta y continuamente emite pequeñas correcciones al reloj del sistema. Sin mencionar la corrección del segundo intercalar.

Aunque currentTimeMillis se usa a menudo, sigue siendo incorrecto medir el tiempo transcurrido y el tiempo. De todos modos, como la invocación lleva algo de tiempo, no debe esperar cronometrar correctamente intervalos muy muy pequeños. Pero eso no debería ser un problema al trabajar con Android.

Te mostraré un ejemplo:

long startTime = System.nanoTime();

// run/call the method

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

También puede echar un vistazo a esta biblioteca gratuita: http://jetm.void.fm/ .

También puede encontrar un tutorial para JMeter .

David
fuente