يعمل Jetpack Compose على تسريع تطوير واجهة المستخدم وتحسين تطوير تطبيقات Android. ومع ذلك، يجب مراعاة كيفية تأثير إضافة أداة Compose إلى تطبيق حالي في مقاييس مثل حجم حزمة APK للتطبيق وأداء عملية الإنشاء ووقت التشغيل.
حجم حزمة APK ومدة إنشاءها
يتناول هذا القسم تأثير ذلك في حجم حزمة APK ووقت الإنشاء من خلال الاطّلاع على نموذج تطبيق Sunflower، وهو تطبيق يعرض أفضل الممارسات في نقل تطبيق مستند إلى View إلى Compose.
حجم حزمة APK
تؤدي إضافة مكتبات إلى مشروعك إلى زيادة حجم حزمة APK. تشير النتائج التالية إلى حِزم APK المصغرة للإصدار من كل مشروع مع تفعيل تصغير موارده ورموزه، وذلك باستخدام الوضع الكامل لمجموعة R8، ويتم قياسها باستخدام أداة تحليل APK.
المشاهدات فقط | طرق العرض المختلطة وميزة "الكتابة" | إنشاء الرسائل فقط | |
---|---|---|---|
حجم التنزيل | 2,252 كيلوبايت | 3,034 كيلوبايت | 2,966 كيلوبايت |
عند إضافة Compose إلى Sunflower لأول مرة، زاد حجم حزمة 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 مقارنةً بأداء نظام View، وكيفية قياسه.
عمليات إعادة التركيب الذكية
عندما تكون أجزاء من واجهة المستخدم غير صالحة، يحاول تطبيق Compose إعادة إنشاء الأجزاء التي تحتاج إلى تعديل فقط. يمكنك الاطّلاع على مزيد من المعلومات حول ذلك في مستندات مراحل دورة النشاط في العناصر القابلة للتجميع وJetpack Compose.
الملفات الشخصية الأساسية
الملفات الشخصية الأساسية هي طريقة ممتازة لتسريع تجارب المستخدِمين الشائعة. يمكن أن يؤدي تضمين ملف تعريف "الأداء الأساسي" في تطبيقك إلى تحسين سرعة تنفيذ الرمز البرمجي بنسبة% 30 تقريبًا عن الإطلاق الأول من خلال تجنُّب خطوات التفسير والتجميع أثناء التنفيذ (JIT) لمسارَي الرمز البرمجي المضمّنين.
تتضمّن مكتبة Jetpack Compose ملف تعريف أساسيًا، ويمكنك الحصول على هذه التحسينات تلقائيًا عند استخدام Compose في تطبيقك. ومع ذلك، لا تؤثر هذه التحسينات إلا في مسارات الرموز البرمجية ضمن مكتبة Compose، لذا ننصحكبإضافة ملف تعريف أساسي إلى تطبيقك لتغطية مسارات الرموز البرمجية خارج Compose.
المقارنة مع نظام View
يتضمّن Jetpack Compose العديد من التحسينات على نظام View. وسيتم وصف هذه التحسينات في الأقسام التالية.
كل شيء يمتد إلى العرض
كل View
يتم رسمه على الشاشة، مثل TextView
أو Button
أو
ImageView
، يتطلّب تخصيص ذاكرة وتتبُّع الحالة الصريح ومختلف
الطلبات المُعاد الاتصال بها لتلبية جميع حالات الاستخدام. بالإضافة إلى ذلك، يحتاج مالك View
المخصّص
إلى تنفيذ منطق صريح لمنع إعادة الرسم عندما لا يكون
ضروريًا، على سبيل المثال، لمعالجة البيانات المتكرّرة.
يعالج Jetpack Compose هذه المشكلة بعدة طرق. لا تتضمّن أداة الإنشاء عناصر محدّدة
قابلة للتعديل لعرض الرسومات. عناصر واجهة المستخدم هي دوال تركيبية بسيطة
يتم كتابة معلوماتها في التركيبة بطريقة يمكن إعادة تشغيلها. يساعد ذلك في
تقليل عمليات تتبُّع الحالة الصريحة وتخصيص الذاكرة وعمليات الاستدعاء إلى
العناصر القابلة للتجميع التي تتطلّب الميزات المذكورة فقط بدلاً من طلبها من جميع
الإضافات من نوع View
معيّن.
بالإضافة إلى ذلك، يوفّر تطبيق Compose عمليات إعادة تركيب ذكية، ويُعيد تشغيل النتيجة التي تم رسمها سابقًا إذا لم تكن بحاجة إلى إجراء تغييرات.
عمليات تمرير تنسيقات متعددة
تتمتع مجموعات الاطِّلاع التقليدية بقدرٍ كبير من التعبير في منصّات برمجة التطبيقات الخاصة بقياسها وتخطيطها، ما يجعلها عرضة لعمليّات تخطيط متعدّدة. يمكن أن تؤدي عمليات معالجة المخطط المتعدّدة هذه إلى زيادة مضاعفة في العمل إذا تم إجراؤها في نقاط مُدمجة معيّنة في التسلسل الهرمي لملف الاطّلاع.
يفرض Jetpack Compose مرورًا واحدًا للتصميم لجميع العناصر القابلة للتجميع في التصميم من خلال عقد واجهة برمجة التطبيقات. يتيح ذلك لميزة "الإنشاء" التعامل بكفاءة مع أشجار واجهة المستخدم المعقدة. إذا كانت هناك حاجة إلى قياسات متعددة، تتضمّن أداة "الإنشاء" قياسات أساسية.
عرض أداء بدء التشغيل
يحتاج نظام العرض إلى تضخيم تنسيقات XML عند عرض تنسيق معيّن للمرة الأولى. يتم حفظ هذه التكلفة في Jetpack Compose لأنّ التنسيقات مكتوبة باستخدام Kotlin ويتم تجميعها مثل بقية أجزاء تطبيقك.
Compose Benchmark
في الإصدار 1.0 من Jetpack Compose، هناك اختلافات ملحوظة بين أداء
تطبيق في الوضعَين debug
وrelease
. للحصول على أوقات تمثيلية، استخدِم
دائمًاrelease
بدلاً من debug
عند إنشاء ملف تعريف لتطبيقك.
للتحقّق من مستوى أداء رمز Jetpack Compose، يمكنك استخدام مكتبة Jetpack Macrobenchmark. للتعرّف على كيفية استخدامه مع Jetpack Compose، اطّلِع على مشروع MacrobenchmarkSample.
يستخدم فريق Jetpack Compose أيضًا أداة Macrobenchmark لرصد أي تراجعات قد تحدث. على سبيل المثال، اطّلِع على مقياس الأداء الخاص بالعمود البطيء ولوحة البيانات لتتبُّع حالات التراجع.
إنشاء عملية تثبيت الملف الشخصي
بما أنّ Jetpack Compose هي مكتبة غير مجمّعة، لا تستفيد من Zygote الذي يحمِّل مسبقًا فئات أدوات برمجة واجهة المستخدم وعناصر الرسم في نظام العرض. يستخدم الإصدار 1.0 من Jetpack Compose ملف الإصدار لإنشاء إصدارات الإصدار. تسمح أدوات تثبيت الملفات الشخصية للتطبيقات بتحديد الرموز البرمجية المهمة لتمت compilatio (AOT) مسبقًا في وقت التثبيت. تُرسِل ميزة "الإنشاء" ملفًا شخصيًا يتضمن قواعد تثبيت تقلّل من وقت بدء التشغيل والارتباك في تطبيقات "الإنشاء".
أفلام مُقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما تكون لغة JavaScript غير مفعّلة.
- اعتبارات أخرى
- استخدام ميزة "الإنشاء" في "العروض"
- الانتقال للأعلى أو للأسفل