IQIYI الروبوت يبادر العميل الأمثل وتحليل

1 مقدمة

تمت زيارتها قطاع الإنترنت القانون من ثماني ثوان، إذا كان مفتوحا الصفحة لمدة أطول من 8 ثوان، وسوف يكون هناك أكثر من 70 من المستخدمين التخلي عن الانتظار لالروبوت APP، ومتطلبات أكثر صرامة، إذا كان النظام لا يستجيب لأكثر من 5 ثوان، وسوف يكون هناك ANR، APP قد تضطر إلى إيقاف، وبالتالي، وقت البدء كمؤشر الأداء المهم، والعلاقة بين تجربة المستخدم الأولى.

IQIYI اندروز APP تولي أهمية كبيرة لتحسين سرعة التمهيد، سنبدأ عملية، وبدء قياس الوقت، تبدأ الأمثل، وكذلك متابعة الرصد لتقاسم تجربتنا في تحسين بدء التشغيل.

وضع 2 ابدأ

إلى قياس دقيق لAPP بدء التشغيل الوقت، ونحن بحاجة إلى فهم APP عملية التمهيد بأكملها. بدء عملية، فإنه يمكن عموما تقسيمها إلى الفئات الثلاث التالية:

وكما يتبين من الشكل، عملية التمهيد، في ظل وضع الباردة، ودورة الحياة تفعل أكثر، وهي أطول البداية، ولذلك علينا أن نبدأ لقياس APP بدء الباردة الوقت. أثناء بدء التشغيل، وكيفية تحديد والتي بدأت الحياة سرعة تأثير دورة؟

3 بدء التشغيل

ونحن نعلم، حتى APP والتشغيل، هو عملية إنشاء نظام لينكس والأشياء المكونة، والمكونات ورسائل العمليات في موضوع UI.

الرقم بدء عملية:

ويمكن تقسيم عملية التطبيق بدء التشغيل إلى ثلاث مراحل:

3.1 عملية خلق

عند بدء APP، إذا لم عملية التطبيق الحالية موجودة، فإنه سيتم إنشاء عملية جديدة، وأهم تبدأ عملية التطبيق، إذا بدء المكون، ومجموعة مكون الروبوت: سمة عملية، المكون عملية تشغيل غير موجود، فإنه سيتم إنشاء عملية جديدة.

لاحظ أنه إذا كانت مرحلة البدء، والتهيئة المكونة، يحتوي على أكثر من عملية، فإنه سيتم إنشاء عدة عمليات، عملية BindApplication سوف تتكرر عدة مرات

3.2 إنشاء موضوع UI ومعالج

بعد إنشاء هذه العملية، من خلال التفكير والتنفيذ ActivityThread وظيفة الدخول، وإنشاء معالج، وprepareMainLooper في الموضوع الحالي، ورسالة تلقي عنصر في معالج، ونحن ننظر إلى رسالة معالجتها معالج:

  • LAUNCH_ACTIVITY، بداية، آخر التنفيذ
  • RESUME_ACTIVITY، استعادة آخر
  • BIND_APPLICATION، بدء التطبيق
  • BIND_SERVICE، وإنشاء الخدمة، onBind
  • LOW_MEMORY، الذاكرة غير كافية، والخفي الانتعاش

sMainThreadHandler، والتعامل مع العديد من هنا فقط القوائم يمكن ان يتم تنفيذ العملية في مرحلة البدء الرسالة، يتم تشغيل هذه العمليات في الموضوع الرئيسي من حيث البداية، فمن الانسداد.

آخر دورة الحياة، تحتاج الطبيعة التي يتعين القيام بها خلال مرحلة بدء التشغيل، ولكن، لإنشاء الخدمة، رد Trim_memory، استقبال البث وغيرها من العمليات، فمن المهم النظر، والطبيعة تستغرق وقتا طويلا لعملياتها.

المدى 3.3 آخر والتعادل

العمليتين الأولى، وخلق العمليات والخيوط وUI معالج، هي التي تحدد نظام المطورين APP، ولا يمكن السيطرة على وقت تنفيذه، في هذه المرحلة، وBindApplication التنفيذ، ودورة الحياة Acitivity، يمكن لجميع من بذل المطورين لتخصيص.

آخر بعد التنفيذ لonResume، سوف تؤدي إلى ViewRootImpl، يقوم performTraversals مرتين، عملية اجتياز الثانية، وتنفيذ عمليات performDraw و خيوط تنفيذ يخطر في وقت واحد RenderThread رسم.

من بداية المرحلة الثالثة، يمكننا أن نرى أن طول وقت بدء التشغيل من البداية، والعامل الحاسم هو: كم عدد الأشياء الوقت الذي يقضيه القيام موضوع الرئيسي، لذلك ركزنا على العمل الأمثل، الرئيسي التحقيق تستغرق وقتا طويلا موضوع جنس العمل، وتحسين العقلاني. الموارد الروبوت الهاتف، ونظام يقتصر، الكثير من موضوع غير متزامن، يستبق وحدة المعالجة المركزية، مما أدى إلى إعدام موضوع الساعة شريحة زيادة الفاصل الزمني الرئيسية. وبالمثل، فإن حالة من استهلاك الذاكرة، GC تردد، سوف تؤثر أيضا على وقت البدء.

تحليل 4 والقياس

من خلال قراءة المصدر أعلاه، علينا أن نفهم عملية التمهيد، ويمكن أن يتسبب سبب لبدء بطيئة جدا. التالي نقدم بعض طرق التحليل المستخدمة عادة وطريقة قياس الوقت.

أبدأ أداة التحليل، وتستخدم أساسا SysTrace، واستخدام محددة، يرجى الرجوع إلى الفاحص شبكة ثيقة https://developer.android.com/studio/command-line/systrace.

4.1 SysTrace المهارات التحليلية

4.1.1 UI شاشة ملونة الموضوع

  • الأخضر: الجري
  • الأبيض: النوم
  • براون: مصادر الطاقة غير المنقطعة النوم
  • البرتقال: مصادر الطاقة غير المنقطعة النوم - بلوك I / O

حيث ضمن 10ms، النوم الدولة في وقت قصير دون الاهتمام، ربما لأن الوقت CPU الفاصلة شريحة جدولة مهمة الحاصل؛ بلوك I / O الوضع والنوم فترة أطول من الزمن، يمكن تحديد انسداد في هذا المنطق بداية مرحلة تشغيل، ضرورة مواصلة تحليل المواقع التعليمات البرمجية.

4.1.2 الاطلاع على البيانات الشخصية منذ فترة طويلة المواضيع وحالة وحدة المعالجة المركزية

عرض استخدام وحدة المعالجة المركزية:

إعدام الموضوع:

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

4.2 SysTrace وقت البدء

في FIG SysTrace، يحتوي UI الموضوع bindApplication، activityStart، اجتياز عمليات أخرى، RenderThread يحتوي على عمليات DrawFrame أخرى. TAG هو مصدر هذه العقد التي تمت إضافتها أو الرجوع إلى # 3.2 في المقدمة.

لقد بدأت في الوقت تتبع: من bindApplication لاستكمال اجتياز الثاني، فإنه يمكن اعتبار تقديم UI الأول هو الكامل، وبدء التشغيل الكامل. تحديد بداية ونقطة نهاية، يمكنك عرض الوقت المستهلك في هذه العملية.

4.3 بنك التنمية الاسيوى قذيفة صباحا بداية -W

عندما تبدأ إحصاءات APP الوقت، ونظام يوفر لنا قيادة بنك التنمية الآسيوي، يمكنك إخراج وقت البدء

I TotalTime: يمثل إطلاق التطبيق الجديد تستغرق وقتا طويلا، بما في ذلك البدء وآخر عملية جديدة، ولكن وقفة آخر طلب قبل لا يشمل تستغرق وقتا طويلا

النظام بعد اكتمال الرسم، سوف ActivityManagerService طريقة الاستدعاء، والوقت هو أفضل SysTrace إحصاءات دقيقة، ولكن يمكن أن تساعدنا لبدء قياس TotalTime عدة مرات خلال البرنامج النصي، تبدأ الفرق بين النسخة النقيض من ذلك الوقت.

4.4 دفن

APP من خلال بدء دورة الحياة في موقف الوقت نقطة تسجيل المفتاح إضافة إلى تحقيق الهدف من القياس.

القبض على الشاشة 4.5

وضع الشاشة لوقت قياسي جمع وأقرب إلى المعنى الحقيقي للجسم المستخدم.

الأمثل

من أجل السماح للمستخدم بعد دخول APP وأسرع وأكثر سلاسة لاستخدام الخدمة، وسوف تبدأ هذه العملية، في وقت مبكر من تشكيل بعض المكتبات الأساسية والشروع في العملية، وهو ما يعني أنه سيتم استبق الموارد المحدودة يؤثر على وقت البدء. الأمثل لبدء الوقت، هو التوازن بين الأداء والخبرة العملية.

بواسطة أداة تحليل Systrace، وجدنا بعض مشكلات بدء التشغيل iQIYI iQIYI اندروز APP، المقبل، ونحن جنبا إلى جنب مع ممارسات محددة التجارية، التي نفذت لمشاكل الأمثل بدء التشغيل.

5.1 التمييز بين عملية تهيئة التطبيق

تعلمنا من رقم 3، لأغراض التطبيق، يمكن للمكونات الداخلية التطبيقات تشغيل في عمليات مختلفة. على سبيل المثال: APP ديها عملية الأولية، والمكونات في العملية، سيتم إنشاء عملية التحميل ثلاث عمليات في مرحلة البدء مكونات المقابلة، ولكن نظام QYApplication واحد فقط ورثت من التطبيق، وإنشاء ثلاث عمليات، QYApplication إرفاق ()، OnCreate الخاص () سيتم تنفيذ طريقة ثلاث مرات.

تحتاج كل عملية ليتم تهيئتها لقول المحتوى هو بالتأكيد ليست واحدة، لذلك، من أجل منع إهدار الموارد، ونحن بحاجة إلى التمييز بين عملية تهيئة Appcation.

الإنجازات الأول: تطبيقات عملية متعددة، والمحتوى لنوع من التهيئة، التهيئة تمييز معقول، سوف يقلل إلى حد كبير من الذاكرة وحدة المعالجة المركزية الاستخدام.

5.2 متزامنة مهمة تستغرق وقتا طويلا لمعالجة

عملية موضوع الفرعية مهمة تستغرق وقتا طويلا، وموضوع الرئيسي للقيام أقل، وAcitivity عاجلا رسمها في مرحلة، وكلما واجهة لتظهر.

ملاحظة:

  • ليس في موضوع الرئيسي للقيام بمهام تستغرق وقتا طويلا، مثل ملف، شبكة، الخ
  • بدء مرحلة التهيئة المهام، في محاولة للتعامل مع الموضوع غير متزامن
  • مؤشر الترابط الرئيسي، لا تنتظر أو الاعتماد على مهمة الخيوط الطفل

I مزيد من التحسين: تجمع مؤشرات الترابط الذاتي يمكن الحفاظ على عدد معين من المواضيع، مهام إدارة قوائم الانتظار.

5.3 منع تعدد خيوط المعالجة CPU تصادر

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

القوائم التالية بعض القواسم المشتركة، ومن المرجح أن سبب CPU هو المشهد استبق:

الإنجاز الأول: من خلال تنفيذ مدة طويلة، ظلت وتيرة تنفيذ الأعمال لتحسين الإشغال وحدة المعالجة المركزية عند مستوى معقول، وسوف تقلل كثيرا من الوقت لبدء، والحد من 300mS وأو أكثر.

5.4 استخدامات API النظام

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

  • SharedPreference.Editor ارتكاب العملية:
  • ارتكاب طريقة ينتمي إلى تنتمي إلى طبيعة حجب API، أوصت تطبيق.
  • وبالإضافة إلى ذلك، ونحن نعلم أن ملف تخزين SP هو ملف XML لتخزين شكل مفتاح القيمة، عند الكثير من الأعمال التجارية، والحاجة إلى تقسيمها إلى عدة ملفات المخزنة، لمنع ملف كبير جدا، وظهر لقراءة ANR تستغرق وقتا طويلا.
  • وعلاوة على ذلك الأمثل لمرحلة البدء، SP العمليات المتكررة في الذاكرة، وتقديم موحدة.
    • AssetManager.open العملية: تطوير الروبوت، ونحن أحيانا الموارد الملفات في الدليل الأصول، ثم فتح ملف عملية القراءة، إذا كان الملف كبير جدا، والحاجة إلى أن يقوم في موضوع غير متزامن.

    الإنجاز الأول: مع حجم الأعمال مع مرور الوقت، وذلك باستخدام API النظام العادي، قد تحدث مشكلات أيضا، من خلال القضاء، والحد من 50-100ms.

    تخطيط 5.5 المدمجة

    تعقيد التخطيط، ورسم لها تأثير مباشر مع الزمن.

    على سبيل المثال، أثناء بدء التشغيل، يحتاج هناك خلفية كبيرة، فقط باستخدام التثبيت الأول، الخاصية لاحقة لالروبوت: الرؤية = "ذهب"، ولكن، على الرغم من أن تعيين خصائص ذهب، لا يظهر، ولكن سيظل حلها.

    الاقتراحات:

    • الحد من مستوى التخطيط
    • استخدام الموارد عديمة الفائدة ViewStub، عند استخدام الحمل

    الإنجازات الأول: مرحلة البدء للتخطيط بسيطة والأمثل من خلال الصور خلفية تحميل، والحد من 50-100ms.

    5.6 خدمة تأخير التهيئة

    التطبيق في عملية بدء التشغيل، في كثير من الأحيان خدمة عملية التهيئة، وذلك بسبب الخدمة عموما لا تنطوي على استخدام واجهة، التهيئة قد يعتقد دورة الحياة ليست في موضوع الرئيسي، وهذا ليس صحيحا، عند 3.2 مصدر بدء التشغيل المذكورة في المقدمة، دورة حياة الخدمة، كما أنها واحدة من الخيط الرئيسي تلقى رسالة معالج.

    الاقتراحات: دورة حياة الخدمة، لاحظ الأداء الأمثل منطق وقت التنفيذ أو تأخير التهيئة قدر الإمكان.

    الإنجاز الأول: يعتمد على خدمة الحياة دورة وقت التنفيذ التهيئة يمكن تخفيض أكثر من 200MS.

    5.7 التأخير مهمة لاستكمال رسم الرئيسية

    لAPP تظهر على المنطق التهيئة لزوم لها يمكن تأجيلها إلى ما بعد منزل التعادل تهيئة.

    ملاحظة:

    • والحاجة إلى ضمان منصب مرتين بعد العرض الاول بالتعادل، لأن النظام سوف تؤدي إلى رسم مرتين Performtraversal.

    مزيد من التحسين: التهيئة يمكن تقسيمها إلى منطق الأعمال، بعد رسم المنزل، وتهيئة 5S، 10S، 20S ثلاث مراحل لمنع المنزل مهمة رسم الكثير من قضية إسقاط الإطارات.

    I النتيجة: رسم المرحلة الافراج عن وحدة المعالجة المركزية، فإنه يمكن أن يكون معقدا لجذب 200MS مقدما أو أكثر.

    6 المراقبة

    تجربة مستخدم متناسقة تعتمد على المراقبة المستمرة، iQIYI لمراقبة الأداء بدء التشغيل وإنشاء نظام مراقبة واختبار والأدوات وفرق التطوير لبناء عدة برامج الرصد المختلفة من خطوط العرض المختلفة

    • 1. اختبار: شاشة قياسية، تجربة الحياة الحقيقية من وجهة نظر المستخدم من عرض، للحصول على وقت البدء الأكثر دقة.
    • 2. في الوقت الحقيقي رصد: سلمت، عينة كبيرة من البيانات دفن الحصول على البيانات البيئية على الانترنت الحقيقي والرصد من الوقت لبدء من الجغرافي والوقت ونوع، الإصدار التطبيق، إصدار نظام وخطوط العرض الأخرى.
    • 3. اختبار سيناريو: من خلال السيناريو، والبدء في جمع البيانات نفسها عدة مرات لجمع، من خلال التباين بين الإصدارات المختلفة، بدء مراقبة التغيرات على مر الزمن.

    7 تمديد SysTrace

    SysTrace يمكن البرهنة بوضوح عقدة TAG، وبدء عملية وأساليب وقت التنفيذ، ومع ذلك، من اكتشاف المشكلة، ثم تحديد المشكلة عن طريق العقدة، هو العمل الشاق جدا، إذا كنت ترجمة المشروع وبطيئة نسبيا، والناس تنهار ببساطة.

    7.1 أتمتة حقن TAG

    الروبوت في عملية تجميع المشروع، تحديد فئة، قبل وبعد الأسلوب، والعقد تتبع الإدراج الآلي، والأساليب الإحصائية وقت التنفيذ.

    عملية:

    • 1. خلال تجميع، مهمة العمل إدراج مخصص،
    • 2. يقرأ ملف التكوين يحتوي على ملف ليتم حقنه أسماء الملفات جافا وأسماء مسار وطريقة
    • 3. حدد موقع ملفات فئة ليتم حقنه، ومن ثم تغييرها من قبل رمز ASM بايت، بعد الطريقة، طريقة الإدراج التخصيص التخصيص

    قبل تشغيل الأداة، فمن الممكن أن تفعل دون تعديل ملف المشروع القائم، وحقن تلقائيا عقدة TAG كود المنطق عند التعبئة والتغليف، والوضع يمكن إعادة تدويرها لتحسين كفاءة التحليل، وتوفير الطاقة.

    8 النتائج الأمثل

    بدء الزمن، ويرجع ذلك إلى أداء نماذج مختلفة مع إصدار مختلف من الروبوت، الإصدار APP من وقت البدء نفسه، فرق كبير، وبالتالي فإن الإحصائيات عموما نفس الهاتف، إصدارات مختلفة للمقارنة، في محاولة لضمان وضع الهاتف الاتساق.

    مقارنة الوقت الأمثل المحمول SysTrace:

    IQIYI الروبوت يبادر العميل الأمثل وتحليل

    سيناريو وقت البدء لجمع المقارنة متعددة:

    بعد التحسين المستمر إصدارات متعددة، واثنين من سيناريوهات مختلفة مع أو بدون الإعلان، والبدء مرة بنسبة 40 و 35 على التوالي، تبدأ سرعة قد تحسنت إلى حد كبير.

    9 ملخص

    بداية الأمثل الوقت والرصد، مهمة طويلة الأجل تتطلب تحليل الوضع الشاذ، ومنطق قانون قد يؤدي إلى حجب الأمثل معقول، وشكرا جزيلا لكم كل الدعم فريق العمل والتعاون.

    وأخيرا، شياو بيان ضعت هنا خطة تعليمية شاملة جدا، والتعلم للجميع لمعا حصة!

    المتقدم الروبوت

    الروبوت التكنولوجيا المتطورة

    مهندس المحمول

    هذه المعلومات التي يحتاجها الجميع المعنية + بريد إلكتروني الرد الخاص، "بيانات أندروز" الوصول الحر!

    لدي هنا الكثير من الروبوت الحرة على أعلى ترتيب المواد التعليمية، بما في ذلك واجهة المستخدم المتقدمة، وتحسين الأداء، ودورات مهندس معماري، NDK والتنمية الهجينة: أكثر الروبوت ReactNative + Weex مثل المعرفة التقنية من أشرطة الفيديو الهندسة المعمارية، وكذلك التخطيط الوظيفي ودليل مقابلة

    هونج كونج الدراما قمة الآلهة "وقت كبير" للشعب هونغ كونغ، وكنت لم أر؟

    كوميديا ليزلي تشيونغ الكلاسيكية لا تعد ولا تحصى، اليوم أن يوصي العديد من الكوميديا بطولة شقيق

    ضباب أيضا؟ عمق الشبكة العصبية ليعلمك كيفية defogging صورة

    والاحتراق الأسرع من الصوت جعل الكورية نظرتم القلبية، وثلاث وجهات نظر التخريب

    T3 قبل الإفراج عنهم، لاعادة البث مطرقة سيطرة المضاربة، وهذا هو عدد المرات؟

    نظام التعب باستمرار على الخط، ولكن العلاج "إدمان التكنولوجيا" لا تزال شبه اقتراح

    لعب مراقبة الوضع: آثار تصل الأعضاء، MG OZ-00MS2B Tallgeese III

    "قوس قزح ستة الحصار" الحد من خريطة: يخت الأحياء الفقيرة ركل PVP

    يوصي 10 أفلام، الطلاب المعلمين التربوي ويمكن للوالدين أن نلقي نظرة على

    أعلن مجد سوف "اسرة ووريورز 8 الإمبراطورية" وغيرها من المباريات الثلاث يكون التبديل الهبوط

    "الرمال مثل" ما يمكن أن يحدث إذا لم يكن لدي القوى العظمى؟

    عملية تفصيلية الروبوت (أ): عملية متعددة آلية وعملية ملخص