Causas de la pérdida de marcos de página de la aplicación y FPS de prueba de rendimiento
Antes de comprender la causa del bloqueo, primero comprenda el proceso de representación de la vista como se muestra en la siguiente figura:
1. La CPU calcula el contenido de la pantalla (como el dibujo de texto). , cálculo del diseño de la interfaz de usuario, creación de vistas, decodificación de imágenes, etc.) y luego envíe el contenido calculado a la GPU.
2. Una vez completado el renderizado de GPU (transformación, síntesis de capas, renderizado de texturas, etc.), coloque el resultado del renderizado en el búfer de fotogramas.
3. El controlador de video leerá los datos en el búfer de cuadros línea por línea de acuerdo con la señal VSync y los transmitirá a la pantalla mediante una posible conversión de digital a analógico.
Observaciones:
1. Todas las imágenes del monitor se escanean progresivamente (se actualizan de izquierda a derecha y de arriba a abajo), como se muestra en la siguiente figura:
3. La sincronización horizontal puede provocar que la pantalla se rompa (como se muestra a continuación). Porque la representación de la imagen no es la imagen completa en conjunto, sino fila por fila y columna. Si la sincronización vertical no está activada y la configuración del dispositivo no es suficiente, la siguiente línea aparecerá antes de que se complete la actualización durante el movimiento de alta velocidad de la pantalla y luego se producirá un corte.
4. La sincronización vertical es para resolver el problema del desgarro de la pantalla. Cuando VSync está activado, la GPU esperará la señal VSync del monitor antes de renderizar un nuevo fotograma y actualizar el búfer. Esto puede resolver el problema del desgarro de la pantalla y aumentar la suavidad de la misma, pero requiere más recursos informáticos y también provocará un cierto retraso.
5. Actualmente, los dispositivos iOS usan doble caché y activan la sincronización vertical, mientras que Android tiene tres cachés y activa la sincronización vertical (¿cómo cambiar entre cachés?)
Primero, vamos a hacerlo. comprenda los conceptos básicos Conocimiento: suponga que la frecuencia de actualización del dispositivo es de 60 HZ. Si la suavidad del deslizamiento de la página es de 60 fps, es decir, se actualizan 60 imágenes en un segundo, será fluido para el ojo humano, es decir, un cuadro de imagen. se generará cada 16,7 ms (1/60). Es decir, V se emitirá cada 16,7 ms.
Causa de pérdida de fotogramas atascados:
Si la CPU tarda mucho tiempo en funcionar. un tiempo de VSync, queda menos tiempo para la GPU. El tiempo total de CPU de la GPU puede exceder los 16,7 ms antes de que llegue el siguiente fotograma y la pantalla no esté lista para el siguiente fotograma. En este momento, el monitor todavía muestra el fotograma anterior y es posible que se produzcan caídas de fotogramas y congelaciones deslizantes.
Asimismo, si la GPU tarda mucho tiempo, el tiempo total puede superar los 16,7 ms.
Así que no importa qué CPU o GPU bloquee el proceso de visualización, provocará la pérdida de fotogramas.
Después del análisis anterior, para optimizar el problema de pérdida de fotogramas, necesitamos optimizar el proceso de procesamiento de la CPU y la GPU.
Hablemos de los siguientes parámetros:
Fotogramas por segundo; el número promedio de actualizaciones de la interfaz de la aplicación por segundo,
Qiu Jian: Jam Qiu Jian. Cantidad: 1.
Gran jank: número de atascos graves en 1 segundo.
Método de cálculo de Qiu Jian:
1. Si se cumplen las dos condiciones siguientes al mismo tiempo, se considera bloqueo de Qiu Jian.
a) El tiempo necesario para el fotograma actual>; los primeros tres fotogramas tardan en promedio el doble.
b) El tiempo requerido para el cuadro actual>; el tiempo requerido para dos cuadros de película (1000 ms/24 ^ 2 = 84 ms).
2. Si se cumplen ambas condiciones al mismo tiempo se considera que está gravemente bloqueado.
a) El tiempo necesario para el fotograma actual>; los primeros tres fotogramas tardan en promedio el doble.
b) El tiempo requerido para el cuadro actual>; el tiempo requerido para tres cuadros de película (1000 ms/24 ^ 3 = 125 ms).
La proporción de tiempo estancado durante la prueba. Es decir, tartamudez = duración de la tartamudez/duración total.
Cálculo del tiempo estancado: según Qiu Jian, una vez que Qiu Jian está atascado, habrá un tiempo estancado para Qiu Jian. Puede haber muchas cartas durante la prueba, es decir, puede haber muchas cartas.
El tiempo de captura es la suma de múltiples tiempos de captura.
El intervalo de tiempo de visualización entre los fotogramas superior e inferior también se puede considerar simplemente como el consumo de tiempo de la renderización de un solo fotograma.
Avg(FTime): Tiempo medio de fotograma.
1. La fluidez no es igual a FPS, por lo que debe medirse en múltiples dimensiones, incluidos FPS, Qiu Jian y tartamudez.
2. La aplicación debe prestar atención a FPS, Qiu Jian y tasa de retraso. Solo necesita distinguir escenarios de uso, como:
(1), ventana de página estática
Siempre que preste atención a FPS, en teoría FPS debería ser 0, de lo contrario significa hay una actualización redundante, lo que fácilmente puede hacer que el teléfono móvil se caliente y consuma electricidad.
(2) Hay una ventana de página de animación de desplazamiento.
Solo presta atención al FPS. El FPS tiene un valor adecuado y no requiere actualización de alta frecuencia.
(3) Deslice rápidamente la ventana de la página.
Debes prestar atención a los FPS, Qiu Jian y la tasa de retraso. Esta es la parte sensible de la interacción con el teléfono móvil. Generalmente, en el estado deslizante, cuanto mayor sea la velocidad de fotogramas, mejor, y cuanto más pequeño sea el Qiu Jian, mejor.
(4) Ventana de la página de reproducción de vídeo.
Debes prestar atención a FPS, Qiu Jian y la tasa de congelación. La congelación de vídeo afecta directamente a los usuarios. La velocidad de fotogramas general del vídeo es de 18 a 24 fotogramas, Qiu Jian=0. Por ejemplo, WeChat reproduce vídeos y reproductores de vídeo.