¿Por qué setColor es tan lento en Android?
Estoy comparando algunos de nuestros códigos en un dispositivo OPO que normalmente es bastante rápido y estoy viendo un montón de rarezas de rendimiento "extrañas". Antes de profundizar en el código nativo de Android, pensé en preguntar aquí.
Lo que estoy viendo es que una llamada para paint.setColor(argbInt)
toma aproximadamente 5 veces más de ejecución que las llamadas siguientes:
- Android: acelerómetro de lectura sin asignación de memoria?
- Es SharedPreferences tiempo de acceso?
- Accediendo simultáneamente a diferentes miembros del mismo objeto en Java
- ¿Cómo mejorar el rendimiento de la aplicación con un mapa de Google en el construido con sencha touch y phoneGap?
- Android: utiliza UUID como clave principal en SQLite
paint.setStyle(Paint.Style.FILL); paint.setAntiAlias(false); canvas.drawRect(x, y, x + w, y + h, paint); paint.setAntiAlias(antialias);
Ahora dibujo rect pasa en la GPU así que estoy adivinando que no veo ninguna sobrecarga para eso. Pero, ¿por qué debo recoger el color de la pintura?
Y como un seguimiento natural, ¿cómo puedo reducir dicha sobrecarga?
También estoy viendo un poco de sobrecarga para canvas.restore()
(aproximadamente 4 veces más lento que el código anterior), pero supongo que tendría sentido ya que podría ser una operación compleja. Simplemente no veo por qué setColor
sería lento?
Para el registro probé el funcionamiento en un OPO con System.nanoTime () y su bastante consistente en términos del funcionamiento (no una casualidad repentina del GC o algo).
- Apague TODA la optimización de Dalvik VM
- Cómo sincronizar correctamente el código RenderScript de Android en Nvidia Shield
- Las imágenes de gridview de Android en caché, en las imágenes de desplazamiento se repiten antes de ser reemplazadas
- ¿Qué significa MediaPlayer info / warning (973, 0)?
- Cómo agrupar varias vistas en un ConstraintLayout
- ¿Por qué usar Fragmentos?
- Androide. Rendimiento de la animación
- Gran número de TextViews un éxito de rendimiento? ¿Debo cambiar a ListView en lugar de usar Scrollview?
No pude encontrar ninguna respuesta real para "por qué" esto está sucediendo incluso después de excavar a través del código. Mi solución fue almacenar en caché los objetos Paint
para cada estilo en nuestro tema, de modo que volver a pintar el componente con ajustes similares puede volver a usar un valor previamente establecido. Esto parecía tener un impacto positivo en el rendimiento.
- Android Studio tarda demasiado tiempo en ejecutar una aplicación
- Agregar información de velocidad de red en la barra de estado