EmuLabZip logo EmuLabZip

Rendimiento

Actualizado el · Editar esta página en GitHub

La herramienta Performance muestrea la app seleccionada y el dispositivo mientras la herramienta está abierta, y dibuja los últimos dos minutos como gráficos en vivo. Elige la app en la barra de herramientas; sin una, solo se muestran los valores de todo el dispositivo.

Qué se mide#

ValorAndroidSimulador de iOS
CPU de la appTiempo de usuario + sistema de /proc/<pid>/stat, como parte de todos los núcleosTiempo de CPU del proceso en el host (ps), como parte de todos los núcleos del Mac
CPU del dispositivo/proc/stat, tiempo ocupado en todos los núcleos— (el simulador comparte la CPU del Mac)
Memoria de la appResident set size (VmRSS)Resident set size del proceso en el host
Memoria del dispositivoMemTotal − MemAvailable de /proc/meminfo—
Frame rateFotogramas renderizados por segundo, de dumpsys gfxinfoPhase 4, con trazas de Instruments
Fotogramas con jankProporción de fotogramas con jank desde la muestra anteriorPhase 4
BateríaNivel y temperatura de dumpsys battery—

Cada muestra de Android es una llamada a adb shell que ejecuta todos los comandos a la vez, así que muestrear cada 500 ms sigue siendo barato. El id de proceso de la app se busca en cada muestra: cuando la app se reinicia, los gráficos continúan con el nuevo proceso.

Cómo leer los gráficos#

  • Los porcentajes de CPU son de todo el dispositivo, como los muestra Android Studio. En un emulador de 4 núcleos, un núcleo ocupado es el 25 %.
  • El frame rate solo se mueve mientras la app dibuja. Una pantalla estática no renderiza fotogramas, y eso es bueno.
  • Los fotogramas con jank son los que no cumplieron su plazo, según los cuenta el gfxinfo de la plataforma.
  • Pasa el cursor sobre un gráfico para leer los valores exactos. Los gráficos con una sola serie no tienen leyenda; el título nombra el valor.

Controles#

ControlEfecto
0.5 s · 1 s · 2 sTiempo entre muestras.
PauseDetiene el muestreo; los gráficos conservan lo que tienen.
Clear (papelera)Vacía los gráficos.

El muestreo se detiene cuando sales de la herramienta, así que nunca se ejecuta en segundo plano.

Debajo de los gráficos hay dos tarjetas que miden algo bajo petición: Start time (guía) y Energy (guía). Ambas cambian el dispositivo mientras se ejecutan (la app se detiene y se abre; la batería se desconecta a ojos del servicio de batería) y lo dejan como estaba.

Desde la línea de comandos#

emulabzip perf --app com.example.app
emulabzip perf --app com.example.app --interval 500 --json | jq .appCpu