زيادة سرعة بدء استخدام "أدوات مطوري البرامج" بنسبة 13% تقريبًا 🎉 (من 11.2 ثانية إلى 10 ثوانٍ)
النص المختصر؛ يتم تحقيق النتيجة من خلال إزالة التسلسل المتكرّر.
نظرة عامة
أثناء بدء تشغيل "أدوات مطوري البرامج"، يجب إجراء بعض عمليات الاستدعاء إلى محرك JavaScript V8.
تُعرف الآلية التي يستخدمها Chromium لإرسال أوامر "أدوات مطوري البرامج" إلى V8 (ولبروتوكول IPC بشكل عام) باسم mojo
. اكتشف زملائي بينيديكت مورير وسيغورد شنايدر عدم الكفاءة أثناء العمل على مهمة أخرى، فتوصلوا إلى فكرة تهدف إلى تحسين العملية من خلال إزالة خطوتين متكررين في طريقة إرسال هذه الرسائل وتلقيها.
لنتعرّف على آلية عمل آلية mojo
.
آليات mojo
هناك أمر mojo EvaluateScript
ينفذ أمر JS. فهو ينشئ تسلسلاً لأمر JS بالكامل، بما في ذلك arguments
في سلسلة من رمز مصدر JavaScript الذي يمكن أن يكون eval()
. كما قد تتخيل، يمكن أن تصبح هذه السلاسل طويلة جدًا ومكلفة. بعد تلقّي الأمر V8، يتم إلغاء تسلسل سلاسل رمز JavaScript قبل التشغيل. ينتج عن عملية التسلسل وإلغاء التسلسل لكل رسالة تكاليف عامة كبيرة.
أدرك "بينيديكت ميرير" أنّ عملية إنشاء تسلسل لـ arguments
وإلغاء تسلسلها مكلفة جدًا، وأنّ الخطوات "Serialize JS to string to JS string" و"Deserialize JS string" هي كاملة ويمكن تخطيها.
التفاصيل الفنية: RenderFrameHostImpl::ExecuteJavaScript
آليتنا في التحسين
قدّمنا طريقة أخرى لواجهة برمجة التطبيقات mojo تتيح لنا تمرير اسم الكائن والطريقة المطلوب طلبها وقائمة الوسيطات مباشرةً، بدلاً من الحاجة إلى إنشاء سلسلة رمز مصدر JavaScript. ويتيح لنا ذلك تخطي التسلسل وإلغاء التسلسل، وعدم الحاجة إلى تحليل رمز JavaScript.
للحصول على تفاصيل فنية حول كيفية تنفيذ هذا التحسين، يمكنك الرجوع إلى تطبيقَي التصحيح التاليَين:
- CL 2431864: [أدوات مطوّري البرامج] تقليل النفقات العامة لإرسال الرسائل في الواجهة الأمامية
- CL 2442012: [أدوات مطوّري البرامج] استخدام
ExecuteJavaScriptMethod
في "أدوات مطوري البرامج"
التأثير
لقياس مدى فعالية التغيير، أجرينا بعض القياسات التي قارنت بين مراجعات Chromium cb971089a058 و4f213b39d581 (قبل التغيير وبعده).
بالنسبة لكلتا المراجعة، قمنا بتشغيل السيناريو التالي 5 مرات:
- تسجيل آثار الأنشطة باستخدام "
chrome://tracing
" - فتح أدوات مطوّري البرامج
- يمكنك الحصول على تتبُّع
CrRendererMain
المسجّل ومقارنة المقاييس الخاصة بـ V8.
استنادًا إلى هذه التجارب، تفتح "أدوات مطوري البرامج" سرعة أكبر بنسبة تقارب 13% (من 11.2 ثانية إلى 10 ثوانٍ) بفضل التحسين.
أهم التفاصيل ومدد وحدة المعالجة المركزية (CPU)
اسم الطريقة | غير محسّنة (بالملّي ثانية) | التحسين (بالملّي ثانية) | الاختلافات (بالملّي ثانية) | تحسين السرعة (%) |
الإجمالي | 11,213.19 | 9,953.99 | -1,259.20 | 12.65% |
v8.run | 499.67 | 3.61 | -496.06 | 12.65% |
V8.Execute | 1,654.87 | 1,349.61 | -305.25 | 3.07% |
v8.callFunction | 1,171.84 | 1,339.77 | 167.94 | -1.69% |
v8.compile | 133.93 | 3.56 | -130.37 | 1.31% |
جدول مقارنة مقاييس التتبّع الكامل
نتيجةً لذلك، تفتح "أدوات مطوري البرامج" وتعمل بشكل أسرع مع تقليل استخدام وحدة المعالجة المركزية (CPU). 🎉
تنزيل قنوات المعاينة
يمكنك استخدام Chrome كناري أو إصدار مطوّري البرامج أو الإصدار التجريبي من المتصفِّح التلقائي للتطوير. وتتيح لك قنوات المعاينة هذه الوصول إلى أحدث ميزات "أدوات مطوري البرامج" واختبار أحدث واجهات برمجة التطبيقات للأنظمة الأساسية للويب والعثور على المشاكل على موقعك الإلكتروني قبل أن يفعلها المستخدمون.
التواصل مع فريق "أدوات مطوري البرامج في Chrome"
يمكنك استخدام الخيارات التالية لمناقشة الميزات والتغييرات الجديدة في المشاركة أو مناقشة أي معلومات أخرى متعلّقة بأدوات مطوري البرامج.
- يمكنك إرسال اقتراح أو ملاحظات إلينا عبر crbug.com.
- يمكنك الإبلاغ عن مشكلة في "أدوات مطوري البرامج" باستخدام خيارات إضافية > مساعدة > الإبلاغ عن مشاكل في "أدوات مطوري البرامج" في "أدوات مطوري البرامج".
- يمكنك نشر تغريدة على @ChromeDevTools.
- شارِك في التعليقات على الميزات الجديدة في فيديوهات YouTube أو نصائح حول أدوات مطوّري البرامج فيديوهات على YouTube.