كيف يمكن لبرنامج Ark Compiler من Huawei تحسين أداء تطبيقات Android

أصدرت شركة Huawei تفاصيل أساسية تتعلق بعمل برنامج Ark Compiler الجديد، ووعدت بتحسين أداء التطبيق بشكل كبير على Android. واصل القراءة للمزيد

لقد دارت الكثير من المحادثات الأخيرة حول شركة Huawei حول الوضع السياسي المؤسف للشركة بسبب أمر تنفيذي أمريكي يمنع العديد من الشركات من التعامل مع شركة هواوي. إن تداعيات مثل هذا القرار المحوري هائلة للغاية بحيث لا يمكن عدم الاهتمام بها. ولكن في واقع بديل حيث لا يوجد هذا الأمر التنفيذي، لكانت شركة هواوي في دائرة الضوء بسبب قرارها كشفت مؤخرًا عن Ark Compiler، وهو أحدث الابتكارات التي تدعي أنها تسد فجوة أداء التطبيقات بين Android وAndroid دائرة الرقابة الداخلية.

قبل التعمق في ماهية Ark Compiler، نحتاج إلى الرجوع خطوة إلى الوراء وفهم ما هو المترجم والغرض الذي يخدمه في نظام Android.

تاريخ موجز للمجمعين والمترجمين الفوريين على Android

المترجم هو برنامج كمبيوتر يقوم بترجمة التعليمات البرمجية من لغة إلى لغة أخرى، وغالبًا ما تكون لغة الآلة الأصلية. يمكن بعد ذلك تنفيذ ذلك مباشرة بواسطة الكمبيوتر أو من خلال برنامج آخر (مترجم). هذه الترجمة ضرورية لأننا نكتب التعليمات البرمجية بلغات برمجة يمكن قراءتها بواسطة الإنسان (مثل Java و Kotlin)، في حين أن الكمبيوتر يفهم فقط لغة الآلة الأصلية (الرمز الثنائي في شكل 1 و 0). وبالتالي، يعمل المترجم كجسر بين التعليمات التي يكتبها الإنسان وقدرة الآلة على فهم تلك التعليمات ومن ثم تنفيذها. إن مدى سرعة وكفاءة حدوث هذا التحويل والتفسير اللاحق يحدد كفاءة المترجم تقديم علاقة مباشرة بين كفاءة المترجم وأداء وكفاءة التعليمات البرمجية، وبالتالي، تطبيقات.

دالفيك VM

في الأيام الأولى لنظام Android، استخدم نظام التشغيل ما كان يسمى Dalvik VM (المترجم الفوري) بالإضافة إلى مترجم JIT (في الوقت المناسب). هذا الفيديو الأقدم من Android Basics 101 الخاص بتلفزيون XDA تتطرق السلسلة إلى Dalvik VM وإعداد JIT، وكلاهما خدم احتياجات أنظمة Android المبكرة حيث كانت قيود الذاكرة وفيرة. أخذ Dalvik VM كود Java الثانوي وقام بتحويله إلى كود الآلة عندما يلزم تنفيذ الكود (وبالتالي فقط في الوقت المناسب). كان هذا ضروريًا لأن مساحة التخزين في الهواتف كانت عائقًا حقيقيًا في ذلك الوقت، لذلك سمح هذا الأسلوب للتطبيقات بالعمل بأحجام ملفات أصغر في النظام.

كان لتجميع التطبيقات وتفسيرها في وقت التشغيل عيب أداء التطبيق الأبطأ بشكل عام حيث سيتم التجميع جنبًا إلى جنب عندما يستخدم المستخدم التطبيق.

كان لدى Dalvik أيضًا قيود في آلية جمع البيانات المهملة الخاصة بها. قام Dalvik بتتبع كل تخصيص للذاكرة بشكل جماعي. بمجرد أن يقرر Dalvik أن جزءًا من الذاكرة لم يعد قيد الاستخدام بواسطة البرنامج، فإنه يحرر هذه الذاكرة مرة أخرى إلى الكومة دون أي تدخل من المبرمج. تسمى هذه العملية "جمع البيانات المهملة" (GC)، وتهدف إلى العثور على كائنات الذاكرة في برنامج لم يعد يتم الوصول إليه ثم استعادة الموارد التي تستخدمها تلك الكائنات لتحرير الذاكرة. يحدد النظام متى تكون هناك حاجة إلى GC على أساس جماعي، لذلك لا يتمكن مطورو التطبيقات من اختيار وقت حدوث أحداث GC [حتى في ART]. لذا، إذا حدث حدث GC في منتصف أي نشاط معالجة مكثف على التطبيق الأمامي، فسيتوقف النظام مؤقتًا تنفيذ العملية وبدء GC، وبالتالي زيادة وقت المعالجة وإدخال "خلل" ملحوظ في الملف المستخدمين.

دفعت هذه القيود وغيرها شركة Google إلى استكشاف طرق بديلة لتحقيق أداء أسرع.

وقت تشغيل أندرويد

مع أندرويد 4.4 كيت كات، قدمت جوجل ART (وقت تشغيل Android) في نموذج المعاينة باستخدام مترجم AOT (Ahead-Of-Time)، ومع Android 5.0 Lollipop، تخلت Google عن Dalvik لصالح ART باعتباره المترجم الفوري الوحيد المتاح. يقوم ART باستخدام AOT بتحويل التعليمات البرمجية إلى لغة الآلة في وقت تثبيت التطبيق، بدلاً من انتظار إجراء هذا التحويل عندما يكون التطبيق قيد الاستخدام. أدى هذا الأسلوب إلى تسريع أوقات تشغيل التطبيق ولكنه قدم أيضًا عيوبًا في شكل أوقات تثبيت أبطأ وزيادة استخدام مساحة القرص. لتحقيق التوازن في كل ذلك، جوجل مُتَبنى مزيج من AOT وJIT والتجميع الموجه بالملف الشخصي مع ART على Android 7.0 Nougat، لضمان عدم تأثر أي عامل بشكل كبير.

تنفيذ ART لنظام Android

عملت ART أيضًا على جعل مجموعة البيانات المهملة أقل اقتحامًا. تم تحسين عملية GC لتكون أسرع بشكل عام مع فترات توقف مؤقتة أقل (إيقاف مؤقت قصير واحد مقابل توقفين مؤقتين في Dalvik)، وتجزئة أقل، واستخدام أقل للذاكرة. يتطرق العرض التقديمي الذي قدمته Google في Google I/O 2014 إلى تفاصيل أفضل موضحًا القيود المفروضة على تحسينات Dalvik's GC وART في هذه الغاية.

حتى مع هذه التغييرات على مر السنين، فإن الفرضية الأساسية لنهج جوجل تتضمن تفسير التعليمات البرمجية أثناء التنفيذ مع تغيير توقيت عنصر الترجمة (الترجمة). لا تزال مجموعة البيانات المهملة تمثل أيضًا نقطة ضعف لمطوري التطبيقات نظرًا لطبيعتها المتأصلة والجماعية. يمكن القول أن أداء تطبيقات Android يتأثر نتيجة لاستمرار وجود نفقات عامة.

Ark Compiler من هواوي

تعمل شركة Huawei على تطوير حل أكثر كفاءة، وبالتالي قامت بتعيين مئات الخبراء في هذا المجال. وكانت نتيجة هذا الجهد هي Ark Compiler، الذي تدعي شركة Huawei أنه أول مترجم ثابت على الإطلاق الذي يسمح بالترجمة المباشرة إلى لغة الآلة، مما يلغي الحاجة إلى ترجمة مباشرة مترجم. تم تطوير Ark Compiler أيضًا بهدف زيادة كفاءة التشغيل لـ Java وC، لذا ينبغي نظريًا رؤية أفضل النتائج مع هذه اللغات.

جرافيك من هواوي. تمت ترجمة النص بواسطة مستخدم XDA MyKeyVans.

تقدم Huawei بعض الميزات الرئيسية لبرنامج Ark Compiler على النحو التالي:

  • يمكن لتقنيات الترجمة مثل AOT وJIT تحويل بعض البرامج إلى كود الآلة وتشغيلها مباشرة على وحدة المعالجة المركزية. لكن هذه التقنيات غير قادرة على فك ارتباطها تمامًا بالمترجم الفوري والقيود المرتبطة به. يستخدم Ark Compiler التحويل البرمجي الثابت، الذي يتيح له فصل نفسه عن المترجم الديناميكي، مما يفتح إمكانية تعزيز أداء التطبيق من خلال "قدم وساق."
  • التجميع الثابت له جانب سلبي محتمل يتمثل في كونه جامدًا جدًا وعدم القدرة على إجراء التعديلات التي يمكن للمترجم الديناميكي إجراؤها أثناء التنفيذ. تدعي شركة Huawei أن التجميع الثابت لـ Ark Compiler يحل هذه المشكلة "من خلال ترجمة الميزات الديناميكية في لغة البرمجة بسلاسة إلى كود الآلة."
  • تتم عمليات التجميع الحالية أثناء أو بعد تثبيت حزمة التطبيق على الجهاز المحمول. تم تصميم Ark Compiler للنشر أثناء تطوير البرامج، وهو ما نفترض أنه يساعد في إزالة الوقت الزائد أثناء التثبيت والتنفيذ. نحن نفترض أن مطوري التطبيقات سيكونون قادرين على تجميع لغات مختلفة مباشرة في كود الجهاز الأصلي أثناء التطبيق عملية التطوير، وبالتالي قد لا يحتاج ملف APK الناتج إلى التفاعل مع مترجم أو جهاز افتراضي وظيفة. وهذا من شأنه نظريًا أن يقلل من النفقات العامة المتعلقة بـ JNI، على سبيل المثال.
  • يقوم Ark Compiler أيضًا بتغيير الطبيعة الجماعية لجمع البيانات المهملة. يسمح بحدوث أحداث GC بشكل منفصل لسلاسل Java المختلفة. يدعي هذا النهج المجزأ أنه يقدم قدرًا أقل من النفايات على التطبيقات الأمامية.

ونتيجة لهذه التغييرات، يستطيع Ark Compiler يعمل على تحسين طلاقة تشغيل نظام Android بنسبة تصل إلى 24%، وسرعة الاستجابة بنسبة تصل إلى 44%، وسلاسة تطبيقات الطرف الثالث بنسبة تصل إلى 60%، بدعوى رفع أداء تطبيقات Android إلى نفس مستوى أداء تطبيقات iOS.

يتم حاليًا تجميع Ark Compiler وتحسينه لبنية شريحة ARM. وتأمل هواوي أن يعمل تصميم الأجهزة والبرامج التعاونية في المستقبل على زيادة قدرات شرائح Kirin إلى الحد الأقصى.

يدعم Ark Compiler استخدام Java القياسي، مما يسمح بالتجميع المباشر لتطبيقات الطرف الثالث دون الحاجة إلى قيام مطور التطبيق بإجراء أي تعديل على التعليمات البرمجية. يسمح Ark Compiler أيضًا بإجراء "تعديلات على بنية التعليمات البرمجية" لمزيد من التحسينات على الأداء والذاكرة. اختارت شركة Huawei أن تجعل Ark Compiler نظامًا مفتوح المصدر، مما يسمح لمطوري الطرف الثالث بتبنيه وتكييف التكنولوجيا لتلبية احتياجاتهم، وتعزيز اعتمادها مع مطوري التطبيقات والهواتف المحمولة الشركات المصنعة.

على الرغم من أن شركة Huawei لم تذكر أي سلبيات لـ Ark Compiler، إلا أنه يمكن للمرء أن يتوقع أحجامًا كبيرة للتطبيقات على الإطلاق على الأقل، ولكن هذا لا ينبغي أن يشكل أي مشاكل على أجهزة الجيل الحالي التي تأتي مع الكثير تخزين. ونتوقع أيضًا ألا يكون Ark Compiler متاحًا لجميع بنيات وحدة المعالجة المركزية، نظرًا لأن مشاكل التوافق مع Google لا تشكل مشكلة بالنسبة لشركة Huawei. تم تصميم Ark Compiler ليتم استخدامه أثناء التطوير وليس أثناء التثبيت؛ يمثل هذا إشارة إلى أن شركة Huawei ربما قامت بتعديل كيفية نشر التطبيقات وتثبيتها على أجهزة Android، وربما عملت أيضًا على تصميم APK الخاص بها. إذا كان هذا صحيحًا، فقد يشكل هذا مشكلة توافق كبيرة في النظام البيئي، وسيستغرق الأمر وقتًا طويلاً قبل أن تصبح هذه ميزة Android قياسية، إن وجدت.

عدم التجميع على جهاز المستخدم يثير أيضًا سؤالًا كبيرًا حول التحسين. يتم حاليًا تحسين ART على أساس كل بنية صغيرة، مما يعني أن الثنائي الناتج سيكون كذلك يختلف بين جهاز Snapdragon مقابل جهاز Exynos، أو حتى بين Snapdragon 845 مقابل Snapdragon 625. يعد هذا النهج منطقيًا بالنسبة للشركات المصنعة التي لديها سيطرة كاملة على شركة نفط الجنوب، مثل Apple وHuawei. ومع ذلك، مع استخدام بقية عالم Android للعديد من شرائح SoC المختلفة، فإن فرض تحسين عام لاستخدامه عبر الأجهزة سيكون بمثابة حاجز أمام توحيد Ark Compiler، مرة أخرى. وبالتالي، لا تتوقع وصول Ark Compiler إلى ذاكرة القراءة فقط (ROM) المخصصة المفضلة لديك في أي وقت قريب.

للتوضيح، تم تطوير Ark Compiler ليعمل مع Android، ولم تذكر شركة Huawei شيئًا فيما يتعلق به نظام التشغيل المنزلي المزعوم وتوافقه مع Ark Compiler، لذلك لا نضع أي افتراضات في هذا الشأن.

تخطط Huawei لعقد مؤتمرين رئيسيين مخصصين للمطورين والنظام البيئي الأكبر. وهما مؤتمر مطوري أجهزة Huawei في الصين ومؤتمر مطوري Green Alliance China. سيتناول كلا الحدثين قضايا محددة مفتوحة المصدر تتعلق ببرنامج Ark Compiler من هواوي، في محاولة لجعل فوائد هذه التكنولوجيا متاحة على نطاق واسع قدر الإمكان.


شكر خاص للمساهم المعترف به في XDA Dees_Troy والمطور المعترف به arter97 على مساعدتهم ومدخلاتهم.

ملاحظة: توقفت Huawei/Honor عن توفير رموز إلغاء قفل أداة تحميل التشغيل الرسمية لأجهزتها. لذلك، لا يمكن إلغاء قفل أدوات تحميل التشغيل الخاصة بأجهزتهم، مما يعني أنه لا يمكن للمستخدمين الوصول إلى ذاكرة الوصول العشوائي (ROM) المخصصة أو تثبيتها.