Android Eclipse: Traceview, simplemente no lo entiendo

Simplemente no recibo los diversos elementos de la salida de traceview , y no puedo encontrar un tutorial. ¿Podría alguien explicar por favor el siguiente con referencia al diagrama abajo:

Introduzca aquí la descripción de la imagen

  1. La anchura de las barras corresponde al tiempo que toma la función. ¿A qué corresponde la altura?
  2. ¿Cuál es la diferencia específica entre Inclusive y Exclusive? Asumí que incluyente incluye las llamadas de todas las funciones de los niños?
  3. ¿Sería esto cierto: La suma de (Tiempo por llamada llamadas) = ​​tiempo que el programa ejecuta (¿qué pasa con las tareas asíncronas?)
  4. ¿Se pueden ignorar las tareas asíncronas al depurar la desaceleración en el hilo principal?
  5. ¿Debería la suma de todos los porcentajes en Excl% igual al 100%?
  6. ¿Qué sucede cuando hay huecos (blanco en medio de negro)? Es que cuando se están ejecutando otros procesos android, o simplemente sus propias tareas asíncronas (parece que las lagunas en uno están alineados con la parte llena en el otro, si ese es el caso, entonces hay algún punto en mover las tareas intensivas a un AsyncTask )?

4 Solutions collect form web for “Android Eclipse: Traceview, simplemente no lo entiendo”

No puedo contestar todas sus preguntas, pero puedo decir …

Para # 4 no, Estás ejecutando un procesador de núcleo único (o al menos emulando uno) para tareas async en su propio hilo tiene que interrumpir el hilo principal para obtener tiempo de procesamiento. Cada vez que se ejecute otro subproceso será "ralentización" en el subproceso principal, por lo que debería estar viendo eso.

Para # 6, las brechas que ves en tu rastreo de ejecución de subprocesos principales se correlacionan exactamente con los tiempos cuando tu asynctask está recibiendo tiempo del procesador. Una vez más, un solo núcleo, sólo puede hacer 1 hilo a la vez. En este intervalo de tiempo, no parece que ningún otro proceso tenga tiempo de procesador, pero esos hilos seguían durmiendo en segundo plano. Dado que esto era (probablemente) un emulador, eso es común. En un teléfono en vivo verá muchos más 🙂

También estoy bastante seguro de # 1 que la altura de cada pico en la ejecución del hilo es la utilización del% procesador. Por ejemplo, el área "negra" del hilo principal es el sistema inactivo. Editar: Ok, estoy seguro ahora. Esto es lo que es. Así que en su hilo principal, esa zona que es sólido rosa es la utilización de procesador 100% sólido.

(Yo habría añadido esto como un comentario a la respuesta de @ ron, pero mi reputación todavía no es lo suficientemente alto como para poder comentar;)).

Desde julio de 2011, de hecho puede obtener traceview y VMDebug para darle tiempo de reloj de pared, así como el tiempo de uso de la CPU, gracias a un cambio de código de Jeff Brown. Me temo que los permisos necesarios requieren un dispositivo con raíz sin embargo. Esto también conduce a una ventana de rastreo ligeramente diferente que la entrada por 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 responder a la pregunta:

  1. Mi entendimiento de las alturas de las barras es que está relacionado con las funciones de los padres. Supongamos que a () llama b (). A continuación, se ejecuta a () mientras b () también se está ejecutando. Mientras b () está ejecutando traceview mostrará el color de b; Pero cuando a está funcionando (es decir, tiempo del excl) dibujará el color de a, y dibujará una barra de A levemente más alta que la barra de b. Al menos, esto es definitivamente cómo funcionan las cosas cuando se acercan; Si hace clic en la función correspondiente a la barra más alta colocará paréntesis debajo de las pequeñas barras cerca de él que muestra que el padre era 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 sólo el tiempo que pasó en la función adecuada (o cambiar en / fuera de ella).

  3. Sólo para el toplevel, que creo que implicó; E incluso entonces ver la respuesta @ ron – esto es el tiempo de uso de la CPU, no el tiempo del reloj de pared. AsyncTasks se ejecutan en el hilo principal, por lo que se incluirá en algún lugar en el desglose de toplevel. Lo mismo para los manejadores

  4. Contestado por Eric

  5. No, debido a redondear / redondear hacia abajo (es decir, 1,87% se mostraría como 1,9%); Pero la suma de las entradas en "Exclusivo" debe sumar el tiempo total mostrado en la esquina superior derecha, que es igual al número calculado para su pregunta (3)

  6. Contestado por Eric

Otro conocimiento importante sobre el gráfico de traceview (como se menciona aquí ): El tiempo mostrado por traceview 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 seguimiento no puede cambiar, ya que no incluye los ciclos de trabajo en reposo. Por lo tanto, al medir el rendimiento, también se recomienda ejecutar la aplicación por un tiempo fijo (10 segundos, 60 segundos, etc.) y comprobar si el tiempo que tarda el 100% de las llamadas incluidas es menor que antes.

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

  • ¿Cómo obtener el seguimiento de los métodos llamados por la aplicación de Android en el inicio de la actividad principal, sin que el código fuente de la aplicación esté disponible?
  • OProfile en android
  • NVidia PerfHUD ES Tegra en Google Nexus 7
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.