تعمل "الأنماط" حسب التصميم في مرحلة التنسيق والرسم في Compose. يؤدي ذلك إلى تجنُّب الحاجة إلى إنشاء معدِّلات مستندة إلى تعبيرات lambda لأنّ "الأنماط" تتخطّى دائمًا مرحلة الإنشاء.
تتحقّق التحسينات في الأداء مقارنةً بالمعدّلات من خلال ثلاثة تحسينات أساسية:
- تغيير المرحلة: تستهدف الأنماط غالبًا مرحلة "الرسم". عندما تتغيّر قيمة، يبطل Compose المرحلة المتأثرة فقط (مثل إعادة الرسم) بدلاً من بدء عملية إعادة إنشاء أو إعادة تخطيط كاملة.
- التخصيص المؤجّل: تؤجّل الأنماط تخصيص موارد الحركة إلى أن تبدأ الحركة فعليًا. يقلّل ذلك من العمل المطلوب أثناء عملية الإنشاء الأولية.
- تقليل الحمل الزائد للعناصر: تخصّص المعدِّلات المتسلسلة عنصرًا لكل سمة (مثل المساحة المتروكة والحافة). تستخدِم الأنماط دالة lambda واحدة لتطبيق عدة سمات، ما يقلّل بشكل كبير من عمليات تخصيص الذاكرة. إذا تم تحديد Style في سمة، تتم مشاركة تعبير lambda هذا بين جميع المكوّنات التي تستخدم هذه السمة.
يعرض الجدول التالي نتائج توضيحية لمقاييس الأداء الداخلية الخاصة بالإصدار 1.11.0-alpha06 من Styles في Compose، وذلك مقارنةً بتنفيذ في Compose بدون Styles.
يُبرز اختبار basic_box_border_change مدى فعالية نظام الأنماط في تجنُّب تخصيص عناصر معدِّلة متعددة أثناء تعديل الخصائص، ما يؤدي إلى انخفاض كبير بنسبة% 77 تقريبًا في عمليات التخصيص، وانخفاض بنسبة% 59 تقريبًا في الوقت.
طريقة الاختبار |
الوصف |
تغيير الوقت |
تغيير التخصيص |
يؤدي هذا الخيار إلى تبديل لون حد |
-59.91% |
-77.22% |
|
يقارن بين حالات التمرير/التركيز/الضغط المستندة إلى الأنماط ومجموعة حالات التفاعل اليدوي. |
-5.24% |
-14.72% |
|
تقيس هذه السمة التركيبة والتصميم الأوليَّين لـ |
-4.78% |
-6.60% |
|
تعرض هذه السمة خمسة مكوّنات |
+0.62% |
+2.41% |
|
يقارن هذا المثال بين ضبط لون النص من خلال نمط واستخدام |
+5.86% |
+9.82% |