التحسين الموجه بالملف الشخصي
في برمجة الحاسوب ، فإن التحسين الموجه بالملف الشخصي ( PGO ، والذي يُنطق أحيانًا باسم pogo [ 1 ] )، والمعروف أيضًا باسم التغذية الراجعة الموجهة بالملف الشخصي ( PDF ) [ 2 ] أو التحسين الموجه بالتغذية الراجعة ( FDO ) [ 3 ]، هو أسلوب تحسين المترجم باستخدام التحليلات المسبقة لعناصر البرامج أو سلوكياتها (" التنميط ") لتحسين أداء وقت التشغيل المتوقع للبرنامج.
طريقة
تعتمد تقنيات التحسين القائمة على التحليل الثابت للبرنامج المصدر على تحسين أداء الكود دون تنفيذه فعليًا. ولا يتم إجراء أي تحليل ديناميكي للبرنامج . على سبيل المثال، يُعد استنتاج أو وضع قيود رسمية على عدد التكرارات التي يُحتمل أن تُنفذها حلقة ما مفيدًا للغاية عند النظر في ما إذا كان ينبغي فكها أم لا، ولكن هذه الحقائق تعتمد عادةً على عوامل وقت التشغيل المعقدة التي يصعب تحديدها بشكل قاطع. في العادة، يكون التحليل الثابت غير مكتمل المعلومات، ولا يُمكنه سوى تقديم تقديرات تقريبية لظروف وقت التشغيل النهائية.
قام أول مترجم عالي المستوى، والذي تم تقديمه باسم نظام ترميز فورتران التلقائي في عام 1957، بتقسيم الكود إلى كتل ووضع جدولًا لتردد تنفيذ كل كتلة من خلال محاكاة تنفيذ الكود بطريقة مونت كارلو ، حيث يتم تحديد نتيجة عمليات النقل الشرطية (كما هو الحال في IFعبارات النوع -) بواسطة مولد أرقام عشوائية يتم ترجيحه بشكل مناسب وفقًا لأي FREQUENCYعبارات قدمها المبرمج. [ 4 ]
بدلاً من معلومات التردد التي يُدخلها المبرمج، تستخدم عملية التحسين الموجهة بالملف التعريفي نتائج اختبارات الأداء للبرنامج المُجهز لتحسين الكود النهائي المُولّد . [ 5 ] [ 6 ] [ 7 ] يصل المُصرّف إلى بيانات الملف التعريفي من عينة تشغيل للبرنامج عبر مجموعة إدخال تمثيلية. تُشير النتائج إلى أجزاء البرنامج التي تُنفّذ بتردد أعلى، وتلك التي تُنفّذ بتردد أقل. تستفيد جميع عمليات التحسين من التغذية الراجعة الموجهة بالملف التعريفي لأنها أقل اعتمادًا على الاستدلالات عند اتخاذ قرارات التجميع. مع ذلك، يجب أن تكون عينة البيانات المُدخلة إلى البرنامج خلال مرحلة التحليل الإحصائي ممثلة إحصائيًا لسيناريوهات الاستخدام النموذجية؛ وإلا، فقد تُؤثر التغذية الراجعة الموجهة بالملف التعريفي سلبًا على الأداء العام للنسخة النهائية بدلًا من تحسينه.
يمكن للترجمة الفورية الاستفادة من معلومات وقت التشغيل لإعادة ترجمة أجزاء من الكود المُنفَّذ ديناميكيًا، ما يُنتج كودًا أصليًا أكثر كفاءة. إذا تغير الملف التعريفي الديناميكي أثناء التنفيذ، فإنه يُمكنه إلغاء تحسين الكود الأصلي السابق، وإنشاء كود جديد مُحسَّن باستخدام المعلومات من الملف التعريفي الجديد.
التبني
يدعم النظام بناء متصفح فايرفوكس باستخدام تقنية PGO. [ 8 ] على الرغم من فعالية PGO، إلا أنها لم تُعتمد على نطاق واسع في مشاريع البرمجيات، نظرًا لنموذج التجميع المزدوج المُرهِق. [ 9 ] من الممكن أيضًا تنفيذ PGO بدون أدوات قياس من خلال جمع بيانات الأداء باستخدام عدادات أداء الأجهزة . [ 9 ] يتميز هذا النهج القائم على أخذ العينات بانخفاض كبير في الحمل الزائد ولا يتطلب تجميعًا خاصًا.
تستخدم آلة جافا الافتراضية (JVM) من HotSpot تقنية التحسين الموجه بالملفات الشخصية لتوليد التعليمات البرمجية الأصلية ديناميكيًا. ونتيجةً لذلك، يتم تحسين ملف البرنامج الثنائي ليتناسب مع الحمل الفعلي الذي يتلقاه. وفي حال تغير الحمل، يمكن للتحسين التكيفي إعادة تجميع البرنامج قيد التشغيل ديناميكيًا لتحسينه وفقًا للحمل الجديد. وهذا يعني أن جميع البرامج التي يتم تشغيلها على آلة جافا الافتراضية من HotSpot تستفيد فعليًا من تقنية التحسين الموجه بالملفات الشخصية. [ 10 ]
تم تقديم PGO في مترجم Microsoft Visual C++ (MSVC) مع إصدار Visual Studio 2005.
تم اعتماد تقنية PGO في إصدار مايكروسوفت ويندوز من متصفح جوجل كروم . تم تفعيل PGO في إصدار كروم ذي 64 بت بدءًا من الإصدار 53، وفي الإصدار 54 لإصدار 32 بت . [ 11 ]
نشرت جوجل ورقة بحثية [ 12 ] تصف أداة تستخدم ملفات تعريف الإنتاج لتوجيه عمليات البناء مما يؤدي إلى تحسين الأداء بنسبة تصل إلى 10٪.
التطبيقات
من أمثلة المترجمات التي تُنفذ PGO ما يلي:
- مترجم Intel C++ ومترجمات Fortran [ 6 ]
- مجموعة مترجمات GNU (المعروفة باسم GCC)
- أوراكل سولاريس ستوديو (المعروف سابقًا باسم صن ستوديو)
- مترجم مايكروسوفت فيجوال سي++ [ 1 ] [ 13 ]
- كلانج [ 14 ]
- IBM XL C/C++ [ 15 ]
- GraalVM [ 16 ] إصدار المؤسسات
- مترجم JIT لـ .NET [ 17 ]
- انطلق [ 18 ]
- الصدأ [ 19 ]
انظر أيضاً
مراجع
- 1 2 "مدونة فريق مايكروسوفت فيجوال سي++" . 12 نوفمبر 2008.
- ↑ "ملاحظات موجهة للملف الشخصي (ملف PDF)" . XL C/C++ لنظام AIX . تم الاطلاع عليه بتاريخ 23 نوفمبر 2013 .
- ↑ باتيست ويشت؛ روبرتو أ. فيتيلو؛ ديهاو تشين؛ ديفيد ليفينثال (24 نوفمبر 2014). "تحسين الأداء الموجه بملف تعريف محسوب للأجهزة". arXiv : 1411.6361 . Bibcode : 2014arXiv1411.6361W .
{{cite journal}}يتطلب الاستشهاد بالمجلة ( مساعدة )|journal= - ↑ جيه دبليو باكوس، آر جيه بيبر، وآخرون، نظام الترميز التلقائي للغة فورتران ، وقائع المؤتمر المشترك الغربي للحاسوب، فبراير 1957، ص 195
- ↑ "K. Pettis, R. Hansen, Profile Guided Code Positioning , ACM SIGPLAN Programming Language Design and Implementation Conference 1990" (PDF ) .
- 1 2 "مترجم إنتل فورتران 10.1، الإصداران الاحترافي والقياسي، لنظام التشغيل ماك أو إس إكس" . مؤرشف من الأصل في 28 سبتمبر 2013.
- ↑ "مرجع سريع لتحسين الأداء الموجه بالملف الشخصي (PGO)" .
- ↑ البناء باستخدام التحسين الموجه بالملف الشخصي ، mozilla.org، 13 أغسطس 2013
- 1 2 Dehao Chen (2010), " Taming hardware event samples for fdo compilation ", Proceedings of the 8th annual IEEE/ACM international symposium on Code generation and optimization , pp. 42–52.
- ↑ إيفانوف، فلاديمير (25 يوليو 2013). "نظرة عامة على تجميع JVM JIT" . تم الاسترجاع في 10 سبتمبر 2016 .
- ↑ مارشان، سيباستيان (31 أكتوبر 2016). "تحسين أداء متصفح كروم على نظام ويندوز باستخدام PGO" . مؤرشف من الأصل في 1 نوفمبر 2016. تم الاطلاع عليه في 1 نوفمبر 2016 .
- ↑ تشين، ديهو؛ لي، ديفيد شينليانغ؛ موسلي، تيب (2016). "AutoFDO: التحسين التلقائي الموجه بالتغذية الراجعة لتطبيقات المستودعات واسعة النطاق". وقائع الندوة الدولية لعام 2016 حول توليد الشفرات والتحسين . نيويورك، نيويورك، الولايات المتحدة الأمريكية. الصفحات 12-23 . doi : 10.1145/2854038.2854044 . ISBN 978-1-4503-3778-6. S2CID 17473127 .
{{cite book}}: CS1 maint: موقع الناشر مفقود ( رابط ) - ↑ "تحسينات موجهة بالملف الشخصي [ VS 2019 ] " . 18 أكتوبر 2022.
- ↑ "التحسين الموجه بالملف الشخصي [ دليل مستخدم مترجم Clang ] " .
- ^ كوينتيرو ، دينو. شابرولس، سيباستيان؛ تشين، تشي هوي؛ دانداباني، مورالي؛ هولواي، تالور؛ جادهاف، تشاندراكانت؛ كيم، ساي كي؛ كوريان، سيجو؛ راج، بهارات. ريسندي، رونان. رودن، بيورن. سرينيفاسان، نيرانجان؛ ويل، ريتشارد. زاناتا، وليام. تشانغ، تشى. كتب حمراء، آي بي إم (1 مايو 2013). دليل أداء أنظمة IBM Power Systems: التنفيذ والتحسين . آي بي إم ريدبوكس. رقم ISBN 978-0-7384-3766-8– عبر كتب جوجل.
- ↑ "تحسين ملف تنفيذي أصلي باستخدام التحسينات الموجهة بالملف الشخصي [ أدلة إرشادية لـ GraalVM ] " .
- ↑ "ما الجديد في .NET 6: التحسين الموجه بالملف الشخصي" . 26 مايو 2023.
- ↑ "التحسين الموجه بالملف الشخصي" .
- ↑ "التحسين الموجه بالملف الشخصي - كتاب rustc" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 26 فبراير 2026 .
- تحسينات المُترجم
