مزايا الأداء باستخدام "الأنماط"

تعمل "الأنماط" بطبيعتها في مرحلة التنسيق والرسم في Compose. يؤدي ذلك إلى تجنُّب الحاجة إلى إنشاء معدِّلات مستندة إلى تعبيرات lambda لأنّ "الأنماط" تتخطّى دائمًا مرحلة الإنشاء.

مراحل Compose ومكان تنفيذ Styles
الشكل 1. مراحل Compose والأماكن التي يتم فيها تنفيذ "الأنماط"

تتحقّق التحسينات في الأداء مقارنةً بمعدّلات التكرار من خلال ثلاثة تحسينات أساسية، وهي:

  • تغيير المرحلة: تستهدف الأنماط غالبًا مرحلة "الرسم". عندما تتغيّر قيمة، يبطل Compose المرحلة المتأثرة فقط (مثل إعادة الرسم) بدلاً من بدء عملية إعادة إنشاء أو إعادة تخطيط كاملة.
  • التخصيص المؤجّل: تؤجّل الأنماط تخصيص موارد الحركة إلى أن تبدأ الحركة فعليًا. يقلّل ذلك من العمل المطلوب أثناء عملية الإنشاء الأولية.
  • تقليل الحمل الزائد للعناصر: تخصّص المعدِّلات المتسلسلة عنصرًا لكل سمة (مثل المساحة المتروكة والحافة). تستخدم الأنماط دالة lambda واحدة لتطبيق عدة سمات، ما يقلّل بشكل كبير من عمليات تخصيص الذاكرة. إذا تم تحديد Style في سمة، تتم مشاركة تعبير lambda هذا بين جميع المكوّنات التي تستخدم هذه السمة.

يعرض الجدول التالي نتائج توضيحية لمقاييس الأداء الداخلية الخاصة بالإصدار 1.11.0-alpha06 من Styles في Compose، وذلك مقارنةً بتنفيذ في Compose بدون Styles.

يُبرز اختبار basic_box_border_change قوة نظام الأنماط في تجنُّب تخصيص عناصر معدِّلة متعددة أثناء تعديلات الخصائص، ما يؤدي إلى انخفاض كبير بنسبة% 77 تقريبًا في عمليات التخصيص، وانخفاض بنسبة% 59 تقريبًا في الوقت.

طريقة الاختبار

الوصف

تغيير الوقت

تغيير التخصيص

basic_box_border_change

يؤدي هذا الخيار إلى تبديل لون حد Box لقياس أداء التحديث.

‫-59.91%

‎-77.22%

input_state_basic_box

تقارن هذه السمة بين حالات التمرير/التركيز/الضغط المستندة إلى الأنماط وحالات التفاعل التي يتم جمعها يدويًا.

‫-5.24%

‎-14.72%

basic_box

تقيس هذه السمة التركيبة والتنسيق الأوليَّين لـ Box مع خمسة معدِّلات متسلسلة.

‎-4.78%

‎-6.60%

basic_text

تعرض هذه الدالة خمسة مكوّنات BasicText مع سلاسل مرمّزة.

‫+0.62%

‫+2.41%

basic_text_provided_color

يقارن هذا المثال بين ضبط لون النص من خلال نمط واستخدام CompositionLocalProvider.

‫‎+5.86%

‫+9.82%