studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones android eclipse profiling

programacion - Eclipse de Android: Traceview, simplemente no lo entiendo



manual de programacion android pdf (4)

Simplemente no consigo los diversos elementos de la salida de vista de traceview , y no puedo encontrar un tutorial. ¿Podría alguien explicar lo siguiente con referencia al diagrama a continuación?

  1. El ancho de las barras corresponde al tiempo que tarda la función. ¿A qué corresponde la altura?
  2. Cuál es la diferencia específica entre Inclusive y Exclusive. ¿Asumí que inclusive incluye las llamadas de todas las funciones de los niños?
  3. ¿Sería esto cierto? La suma de (Tiempo por tiempo de llamada, Llamadas) = ​​tiempo que se ejecuta el programa (¿qué sucede con las tareas asíncronas?)
  4. ¿Se pueden ignorar las tareas asíncronas al depurar la desaceleración en el hilo principal?
  5. ¿La suma de todos los porcentajes en% de exclusión es igual al 100%?
  6. ¿Qué sucede cuando hay espacios vacíos (blanco en medio de negro)? Es cuando otros procesos de Android se están ejecutando, o simplemente sus propias tareas asíncronas (parece que las brechas en una se alinean con la parte rellena en la otra, si ese es el caso, ¿hay algún punto en mover tareas intensivas a una AsyncTask?) )?

(Habría agregado esto como un comentario a la respuesta de @ ron, pero mi reputación aún no es lo suficientemente alta como para poder comentar;)).

Desde julio de 2011, de hecho, puede obtener Traceview y VMDebug para darle tiempo de reloj de pared, así como tiempo de uso de la CPU, gracias a un cambio de código por parte de Jeff Brown. Me temo que los permisos necesarios requieren un dispositivo rooteado sin embargo. Esto también conduce a una ventana de vista de rastreo ligeramente diferente a la publicación de tjb anterior.

http://git.insignal.co.kr/?p=mirror/aosp/platform/dalvik.git;a=commitdiff;h=9f640af99bebc6e96f6e1e9903557e2c8f567483

TLDR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock y reinicie su dispositivo.

HRM, ya que técnicamente se supone que debo ayudar a responder la pregunta:

  1. Mi comprensión de las alturas de las barras es que está relacionado con las funciones de los padres. Supongamos que a () llama a b (). Entonces a () se está ejecutando, mientras que b () también se está ejecutando. Mientras b () se está ejecutando, traceview mostrará el color de b; pero cuando a se está ejecutando (es decir, excluyendo el tiempo) dibujará el color de a, y dibujará la barra de a ligeramente más alta que la barra de b. Al menos, así es como funcionan las cosas cuando te acercas; Si hace clic en la función correspondiente a la barra más alta, colocará corchetes debajo de las barras pequeñas que se encuentran cerca, lo que muestra que el padre fue el responsable de todo; y el padre siempre se muestra como la barra más alta.

  2. si :). Inclusivo es el tiempo dedicado a ejecutar la función o cualquier cosa llamada por esa función; Exclusivo es ''exclusivo de las funciones llamadas'', y es solo el tiempo empleado en la función propiamente dicha (o su activación / desactivación).

  3. Sólo para el nivel superior, lo que creo que implicaba; e incluso luego vea la respuesta de @Ron: este es el tiempo de uso de la CPU, no el reloj de pared. Las AsyncTasks se ejecutan en el subproceso principal, por lo que se incluirán en algún lugar del desglose del nivel superior. Lo mismo para los manipuladores

  4. contestado por eric

  5. No, debido a redondeo hacia arriba / hacia abajo (es decir, 1.87% se mostraría como 1.9%); pero la suma de las entradas en "Exclusivo" debe sumarse al tiempo total que se muestra en la esquina superior derecha, que es el mismo que el número calculado para su pregunta (3)

  6. contestado por eric


Google acaba de lanzar un curso asombroso en Udacity sobre el rendimiento de Android. Hay un módulo que proporciona una guía de Traceview , así como un enlace debajo del módulo de video a su guía de cursos que cubre el uso de Traceview en gran profundidad. Revisando estos responderá la mayoría de sus preguntas. ¡Le recomiendo que eche un vistazo!


No puedo responder a todas sus preguntas, pero puedo decir ...

para # 4 no, está ejecutando un solo procesador central (o al menos emulando uno), por lo que las tareas asíncronas en su propio subproceso tienen que interrumpir el subproceso principal para obtener el tiempo de procesamiento. Cada vez que se ejecute otro subproceso habrá una "desaceleración" en el subproceso principal, por lo que debería estar viendo eso.

para el # 6, los huecos que ve en el seguimiento de ejecución de sus hilos principales se correlacionan exactamente con los tiempos en que su asynctask está obteniendo tiempo de procesador. Nuevamente, solo núcleo, solo puede hacer 1 hilo a la vez. En este segmento de tiempo, no parece que ningún otro proceso haya tenido tiempo de procesador, pero esos hilos seguían durmiendo en el fondo. Dado que esto era (probablemente) un emulador, eso es común. En un teléfono en vivo podrás ver muchos más :)

También estoy bastante seguro de que para el número 1 que la altura de cada pico en la ejecución del subproceso es el% de utilización del procesador. Por ejemplo, el área "negra" del hilo principal está inactiva del sistema. Edit: Ok, estoy seguro ahora. Esto es lo que es. Entonces, en su hilo principal, el área que es de color rosa sólido es la utilización sólida del procesador al 100%.


Otro conocimiento importante acerca del gráfico de vista de rastreo (como se mencionó aquí ): el tiempo que se muestra en la vista de rastreo no es el tiempo real del reloj de pared, sino el tiempo de CPU utilizado.

Por ejemplo, al reducir el FPS, la forma del gráfico de vista de rastreo puede no cambiar, ya que no incluye los ciclos de inactividad. Por lo tanto, al medir el rendimiento, también se recomienda ejecutar la aplicación durante un período de tiempo fijo (10 segundos, 60 segundos, etc.) y verificar si el tiempo que tarda el 100% de las llamadas inclusivas es menor que antes.