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

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

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

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

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

Dalvik VM

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

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

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

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

الروبوت وقت التشغيل

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

تنفيذ ART الروبوت

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

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

ارك مترجم من هواوي

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

الرسم من هواوي. النص المترجم من قبل المستخدم MyKeyVans.

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

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

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

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

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

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

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

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

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


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

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