يعمل Jetpack Compose على تسريع تطوير واجهة المستخدم وتحسين تطوير تطبيقات Android. ومع ذلك، يجب مراعاة كيفية تأثير إضافة أداة Compose إلى تطبيق حالي في مقاييس مثل حجم حزمة APK للتطبيق وأداء عملية الإنشاء ووقت التشغيل.
حجم حزمة APK ووقت إنشائها
يتناول هذا القسم تأثير ذلك في حجم حزمة APK ووقت الإنشاء من خلال الاطّلاع على نموذج تطبيق Sunflower، وهو تطبيق يعرض أفضل الممارسات في نقل تطبيق مستند إلى View إلى Compose.
حجم حزمة APK
تؤدي إضافة مكتبات إلى مشروعك إلى زيادة حجم حزمة APK. تشير النتائج التالية إلى حِزم APK المصغرة للإصدار من كل مشروع مع تفعيل تصغير موارده ورموزه، وذلك باستخدام الوضع الكامل لمجموعة R8، ويتم قياسها باستخدام أداة تحليل APK.
المشاهدات فقط | طرق العرض المختلطة وميزة "الكتابة" | إنشاء الرسائل فقط | |
---|---|---|---|
حجم التنزيل | 2,252 كيلوبايت | 3,034 كيلوبايت | 2,966 كيلوبايت |
وعند إضافة "إنشاء" للمرّة الأولى إلى زهرة الشمس، زاد حجم حزمة APK من 2,252 كيلوبايت إلى 3,034 كيلوبايت، ما يمثّل زيادة بمقدار 782 كيلوبايت. يتألف حِزمة APK التي تم إنشاؤها من حِزمة واجهة المستخدم التي تتضمّن مزيجًا من مكونات Views وCompose. من المتوقّع حدوث هذه الزيادة بسبب إضافة مزيد من التبعيات إلى Sunflower.
في المقابل، عندما تم نقل Sunflower إلى تطبيق مكوّن فقط، انخفض حجم حزمة APK
من 3,034 كيلوبايت إلى 2,966 كيلوبايت، أي انخفاضًا قدره 68 كيلوبايت. ويعود هذا الانخفاض إلى
إزالة التبعيات غير المستخدَمة لعرض الإعلانات، مثل AppCompat
و
ConstraintLayout
.
مدّة التصميم
تؤدي إضافة Compose إلى زيادة وقت إنشاء تطبيقك لأنّ مُجمِّع Compose
يعالج العناصر القابلة للتجميع في تطبيقك. تم الحصول على النتائج التالية باستخدام أداة gradle-profiler
المستقلة التي تنفِّذ عملية إنشاء عدة مرات حتى
يمكن الحصول على متوسط وقت إنشاء لمدة إنشاء تصحيح الأخطاء في
Sunflower:
gradle-profiler --benchmark --project-dir . :app:assembleDebug
المشاهدات فقط | طرق العرض المختلطة وميزة "الكتابة" | إنشاء الرسائل فقط | |
---|---|---|---|
متوسّط مدّة التصميم | 299.47 ملي ثانية | 399.09 ملي ثانية | 342.16 ملي ثانية |
عند إضافة Compose إلى Sunflower لأول مرة، زاد متوسط وقت التصميم من 299 ملي ثانية إلى 399 ملي ثانية، أي زيادة قدرها 100 ملي ثانية. ترجع هذه المدة إلى أنّ مُجمِّع Composeيقوم بأداء مهام إضافية لتحويل رمز Compose المحدَّد في المشروع.
في المقابل، انخفض متوسّط وقت الإنشاء إلى 342 ملي ثانية، أي انخفاضًا بمقدار 57 ملي ثانية، عند اكتمال نقل بيانات Sunflower إلى Compose. ويمكن أن يُعزى هذا الانخفاض إلى عدّة عوامل تؤدي بشكلٍ جماعي إلى تقليل وقت الإنشاء، مثل إزالة ربط البيانات ونقل التبعيات التي تستخدِم kapt إلى KSP وتعديل العديد من التبعيات إلى أحدث إصداراتها.
ملخّص
سيؤدي استخدام Compose إلى زيادة حجم حزمة APK لتطبيقك بشكل فعّال، كما سيؤدي إلى زيادة أداء وقت إنشاء تطبيقك بسبب عملية تجميع код Compose. ومع ذلك، يجب موازنة هذه المفاضلات مع مزايا أداة Compose، خاصةً في ما يتعلق بزيادة إنتاجية المطوّرين عند استخدام Compose. على سبيل المثال، تبيّن لفريق "متجر Play" أنّ كتابة واجهة المستخدم تتطلّب قدرًا أقل بكثير من الرموز البرمجية، يصل أحيانًا إلى%50، ما يؤدي بدوره إلى زيادة الإنتاجية وسهولة صيانة الرموز البرمجية.
يمكنك الاطّلاع على مزيد من دراسات الحالة في مقالة استخدام تطبيق Compose for Teams.
أداء وقت التشغيل
يتناول هذا القسم مواضيع مرتبطة بأداء وقت التشغيل في Jetpack Compose للمساعدة في فهم المقارنة بين Jetpack Compose وأداء نظام "العرض" وكيفية قياسه.
عمليات إعادة التركيب الذكية
عندما تكون أجزاء من واجهة المستخدم غير صالحة، يحاول تطبيق Compose إعادة إنشاء الأجزاء التي تحتاج إلى تعديل فقط. يمكنك الاطّلاع على مزيد من المعلومات عن هذا الموضوع في مستندات دورة حياة العناصر القابلة للإنشاء ومراحل Jetpack Compose.
الملفات الشخصية المرجعية
الملفات الشخصية الأساسية هي طريقة ممتازة لتسريع تجارب المستخدِمين الشائعة. يمكن أن يؤدي تضمين ملف تعريف "الأداء الأساسي" في تطبيقك إلى تحسين سرعة تنفيذ الرمز البرمجي بنسبة% 30 تقريبًا عن الإطلاق الأول من خلال تجنُّب خطوات التفسير والتجميع أثناء التنفيذ (JIT) لمسارَي الرمز البرمجي المضمّنين.
تتضمّن مكتبة Jetpack Compose ملف تعريف أساسيًا، ويمكنك الحصول على هذه التحسينات تلقائيًا عند استخدام Compose في تطبيقك. ومع ذلك، لا تؤثر هذه التحسينات إلا في مسارات الرموز البرمجية ضمن مكتبة Compose، لذا ننصحكبإضافة ملف تعريف أساسي إلى تطبيقك لتغطية مسارات الرموز البرمجية خارج Compose.
المقارنة مع نظام View
يتضمّن Jetpack Compose العديد من التحسينات على نظام View. يتم توضيح هذه التحسينات في الأقسام التالية.
كل شيء يمتد إلى العرض
كل View
يتم رسمه على الشاشة، مثل TextView
أو Button
أو
ImageView
، يتطلب تخصيص ذاكرة وتتبُّع الحالة الصريح ومختلف
الطلبات المُعاد الاتصال بها لتلبية جميع حالات الاستخدام. بالإضافة إلى ذلك، يحتاج مالك View
المخصّص
إلى تنفيذ منطق صريح لمنع إعادة الرسم عندما لا يكون
ضروريًا، على سبيل المثال، لمعالجة البيانات المتكرّرة.
يعالج Jetpack Compose هذه المشكلة بعدة طرق. لا تحتوي أداة الإنشاء على عناصر محدّدة
قابلة للتعديل لعرض الرسومات. عناصر واجهة المستخدم هي دوال تركيبية بسيطة
يتم كتابة معلوماتها في التركيبة بطريقة يمكن إعادة تشغيلها. يساعد ذلك في
تقليل عمليات تتبُّع الحالة الصريحة وتخصيص الذاكرة وعمليات الاستدعاء إلى
العناصر القابلة للتجميع التي تتطلّب الميزات المذكورة فقط بدلاً من طلبها من جميع
الإضافات من نوع View
معيّن.
بالإضافة إلى ذلك، يوفّر تطبيق Compose عمليات إعادة تركيب ذكية، ويُعيد تشغيل النتيجة التي تم رسمها سابقًا إذا لم تكن بحاجة إلى إجراء تغييرات.
عمليات تمرير تنسيقات متعددة
تتمتع مجموعات ViewGroups التقليدية بالكثير من التعبير في واجهات برمجة التطبيقات المتعلقة بالقياس والتنسيق، ما يجعلها عرضة لتذاكر تنسيقات متعددة. يمكن أن تتسبب ممرات التخطيط المتعددة هذه في عمل أسي إذا تم إجراؤها في نقاط متداخلة محددة في التسلسل الهرمي للعرض.
تفرض Jetpack Compose تصريحًا بتنسيق واحد على كل عناصر التصميم القابلة للإنشاء من خلال عقد واجهة برمجة التطبيقات. يتيح ذلك لميزة "الإنشاء" التعامل بكفاءة مع أشجار واجهة المستخدم المعقدة. إذا كانت هناك حاجة إلى قياسات متعددة، تتضمّن أداة "الإنشاء" قياسات أساسية.
عرض أداء بدء التشغيل
يحتاج نظام العرض إلى تضخيم تنسيقات XML عند عرض تنسيق معيّن للمرة الأولى. يتم حفظ هذه التكلفة في Jetpack Compose لأنّ التنسيقات مكتوبة باستخدام Kotlin ويتم تجميعها مثل بقية أجزاء تطبيقك.
Benchmark Compose
في الإصدار 1.0 من Jetpack Compose، هناك اختلافات ملحوظة بين أداء
تطبيق في الوضعَين debug
وrelease
. للحصول على أوقات تمثيلية، استخدِم
دائمًاrelease
بدلاً من debug
عند إنشاء ملف تعريف لتطبيقك.
للتحقّق من مستوى أداء رمز Jetpack Compose، يمكنك استخدام مكتبة Jetpack Macrobenchmark. للتعرّف على كيفية استخدامه مع Jetpack Compose، اطّلِع على MacrobenchmarkSample project.
يستخدم فريق Jetpack Compose أيضًا أداة Macrobenchmark لرصد أي تراجعات قد تحدث. على سبيل المثال، راجِع مقياس أداء العمود الكسول ولوحة البيانات الخاصة به لتتبُّع التراجع.
إنشاء عملية تثبيت الملف الشخصي
بما أنّ Jetpack Compose هي مكتبة غير مجمّعة، لا تستفيد من Zygote الذي يحمِّل مسبقًا فئات أدوات برمجة واجهة المستخدم وعناصر الرسم في نظام العرض. يستخدم الإصدار 1.0 من Jetpack Compose ملف الإصدار لإنشاء إصدارات الإصدار. تتيح أدوات تثبيت الملف الشخصي للتطبيقات تحديد الرموز المُهمة ليتم تجميعها مسبقًا (AOT) أثناء التثبيت. تُرسِل ميزة "الإنشاء" قواعد التثبيت الخاصة بالملف الشخصي التي تقلِّل من وقت بدء التشغيل والارتباك في تطبيقات "الإنشاء".
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون لغة JavaScript غير مفعّلة.
- اعتبارات أخرى
- استخدام ميزة "الإنشاء" في "العروض"
- الانتقال للأعلى أو للأسفل