سؤال

هل يعرف أحدكم ميزة المترجم هذه؟ويبدو أن دول مجلس التعاون الخليجي تدعم ذلك.كيف يعمل؟ما هو المكسب المحتمل؟في هذه الحالة هو جيد؟الحلقات الداخلية؟

(هذا السؤال محدد، وليس حول التحسين بشكل عام، شكرًا)

هل كانت مفيدة؟

المحلول

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

  • تحديد الوظائف التي يجب تضمينها أو عدم تضمينها اعتمادًا على عدد مرات استدعائها.
  • تحديد كيفية وضع تلميحات حول أي فرع من عبارة "if" يجب التنبؤ به بناءً على النسبة المئوية للمكالمات التي تتم بطريقة أو بأخرى.
  • تحديد كيفية تحسين الحلقات استنادًا إلى عدد التكرارات التي يتم إجراؤها في كل مرة يتم فيها استدعاء تلك الحلقة.

أنت لا تعرف حقًا مقدار المساعدة التي يمكن أن تقدمها هذه الأشياء حتى تختبرها.

نصائح أخرى

يوفر PGO زيادة في السرعة بنسبة 5% تقريبًا عند تجميع x264، وهو المشروع الذي أعمل عليه، ولدينا نظام مدمج له (اجعل fprofiled).إنها زيادة جيدة في السرعة المجانية في بعض الحالات، وربما تساعد أكثر في التطبيقات التي، على عكس x264، أقل تجميعًا مكتوبًا بخط اليد.

نصيحة جيسون صحيحة.أفضل عمليات التسريع التي ستحصل عليها تأتي من "اكتشاف" أنك تسمح لـ O(n2) تنزلق الخوارزمية إلى حلقة داخلية في مكان ما، أو أنه يمكنك تخزين بعض الحسابات مؤقتًا خارج الوظائف باهظة الثمن.

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

أحب استخدام Intel VTune كملف تعريف في المقام الأول لأنه غير جراحي مقارنة بأدوات التعريف التي تغير السلوك كثيرًا.

الشيء الممتع في التحسين هو أن مكاسب السرعة يتم العثور عليها في الأماكن غير المتوقعة.

وهذا أيضًا هو السبب وراء حاجتك إلى ملف تعريف، بدلاً من تخمين مكان مشاكل السرعة.

أوصي بالبدء باستخدام ملف التعريف (gperf إذا كنت تستخدم دول مجلس التعاون الخليجي) وابدأ في البحث عن نتائج تشغيل التطبيق الخاص بك من خلال بعض العمليات العادية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top