Por diseño, los estilos operan en la fase de diseño y dibujo de Compose. Esto evita la necesidad de crear modificadores basados en lambda, ya que Styles siempre omite la fase de composición.
Las mejoras en el rendimiento en comparación con los modificadores provienen de tres optimizaciones principales:
- Cambio de fase: Los estilos suelen orientarse a la fase de dibujo. Cuando cambia un valor, Compose solo invalida la fase afectada (p.ej., Redibujo) en lugar de activar una recomposición o un nuevo diseño completos.
- Asignación diferida: Los diseños difieren la asignación de recursos de animación hasta que una animación realmente comienza. Esto reduce el trabajo necesario durante la composición inicial.
- Reducción de la sobrecarga de objetos: Los modificadores encadenados asignan un objeto para cada propiedad (p.ej., padding, borde). Los diseños usan una sola expresión lambda para aplicar varias propiedades, lo que reduce significativamente las asignaciones de memoria. Si se define un Style en un tema, esa expresión lambda se comparte entre todos los componentes que usan ese tema.
En la siguiente tabla, se muestran resultados ilustrativos de una comparativa de rendimiento interna para Compose 1.11.0-alpha06 de Styles, en comparación con una implementación en Compose sin Styles.
La prueba basic_box_border_change destaca la solidez del sistema de diseño para evitar la asignación de varios objetos modificadores durante las actualizaciones de propiedades, lo que genera una reducción masiva de aproximadamente el 77% en las asignaciones y del 59% en el tiempo.
Método de prueba |
Descripción |
Cambio de hora |
Cambio en la asignación |
Alterna el color del borde de un |
-59.91% |
-77.22% |
|
Compara los estados de desplazamiento, enfoque y presión basados en el diseño con la recopilación manual del estado de interacción. |
-5.24% |
-14.72% |
|
Mide la composición y el diseño iniciales de un |
-4.78% |
-6.60% |
|
Renderiza cinco componentes |
+0.62% |
+2.41% |
|
Compara la configuración del color del texto a través de un estilo con el uso de |
+5.86% |
+9.82% |