Consejos útiles para análisis y optimización de gráficos en Android*

Si está desarrollando una aplicación que usa gráficos de manera intensiva y no está satisfecho con el rendimiento, continúe leyendo para averiguar la manera de mejorarlo.

Trabajo previo

El primer paso de todo análisis de rendimiento es averiguar si la aplicación está enlazada a la CPU o a la GPU. Una manera de averiguarlo es con los Analizadores de Rendimiento de Gráficos (GPA).

Se trata de una herramienta para analizar y optimizar gráficos de aplicaciones de Microsoft DirectX* y Android* OpenGL ES*. Podrá encontrar más información aquí: https://software.intel.com/en-us/articles/gpa-which-version.

En este vínculo se incluye una introducción sencilla: https://software.intel.com/en-us/android/articles/using-the-intel-gpa-system-analyzer-to-improve-android-apps

Para optimizar para Android, prefiero el cliente de consola de GPA. Aquí hay más información: https://software.intel.com/en-us/android/articles/using-intel-graphics-performance-analyzers-console-client-for-android-application

  • Si determina que su aplicación está enlazada a la GPU, continúe usando los Analizadores de Rendimiento de Gráficos.
  • Si está enlazada a la CPU, use Intel® VTune™ Amplifier para Android. Aquí hallará más información: https://software.intel.com/en-us/node/496918
  • Si su aplicación está enlazada a la CPU y la GPU, use Platform Analyzer de GPA.

¿Cómo se puede determinar esto?

Hay que revisar la métrica de fps. Mientras se revisa esto, hay que ir a “state overright” y deshabilitar “draw calls”. Si se acumulan fps con “draw calls” deshabilitado, significa que solo la parte de la CPU está trabajando. Entonces hay que analizar la diferencia de fps entre antes y después de la deshabilitación. Con Frame Debugger de GPA se puede hacer un análisis más en profundidad.

Posibles problemas y sus soluciones

Entonces, ¿cómo optimizamos una aplicación enlazada a la GPU?

Lea los consejos siguientes para ver si alguno puede serle útil:

  1. Hay que buscar un módulo de GPU que afecte el rendimiento; para ese fin, use la funcionalidad “State Overrides” de System Analyzer y simplifique con ella la carga de trabajo de gráficos.
  2. Con la herramienta Frame Analyzer de GPA se analiza en detalle el fotograma específico y se revisa cómo afecta el rendimiento cada llamada a dibujo. Es probable que sea necesario experimentar -> aprender -> repetir varias veces para hallar qué llamada está afectando el rendimiento.
  3. Hay que comprimir todas las texturas grandes de la aplicación. Puede leer más acerca de este procedimiento aquí: https://software.intel.com/en-us/android/articles/android-texture-compression
  4. El siguiente paso es simplificar los sombreadores complejos de la aplicación. Los sombreadores son la parte de la aplicación que se usa para crear sombreados. Encontrará más información sobre sombreadores aquí: https://software.intel.com/en-us/articles/efficient-order-independent-transparency-on-android-using-fragment-shader-ordering
    y aquí https://software.intel.com/en-us/articles/shadow-mapping-algorithm-for-android
  5. Escribir demasiados píxeles por segundo en la pantalla es un problema complejo. Una de las posibles maneras de mejorar el rendimiento de los gráficos es reducir la resolución de las imágenes.
  6. A veces se tiene una textura pequeña que se lee muchas veces de manera caótica. Se recomienda limitar las llamadas a texturas pequeñas problemáticas.
  7. Demasiadas llamadas a dibujo. Para aprovechar mejor la memoria caché, es necesario agrupar las llamadas.

     

    Las dos imágenes siguientes ilustran esta idea:
    No óptimo:

    Mejor uso de caché:

Acerca del autor

Stanislav Pavlov trabaja en el Grupo de Software y Servicios de Intel Corporation. Tiene más de diez años de experiencia en tecnología. Sus intereses principales son la optimización del rendimiento, el consumo de energía y la programación paralela. En su puesto actual de ingeniero de aplicaciones que brinda asistencia técnica para dispositivos basados en la tecnología Intel®, Stanislav trabaja en estrecha colaboración con desarrolladores de software y arquitectos SoC para ayudarlos a alcanzar el mejor rendimiento posible en plataformas Intel®. Stanislav tiene una maestría en Economía Matemática que obtuvo en la Escuela Superior de Economía de la Universidad Nacional de Investigación. Actualmente está cursando una maestría en la Escuela de Comercio de Moscú.

有关编译器优化的更完整信息,请参阅优化通知