سؤال

أرغب في تحديد تحسينات المترجم لإنشاء أسرع تطبيق ممكن.

أي من الإعدادات التالية يجب أن أضبطه على "صحيح"؟

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

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

لذا أود أن أعرف ما إذا كان أي من الخيارات المذكورة أعلاه سيؤدي إلى تسريع التطبيق إذا قمت بتعيينها على "صحيح"؟

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

المحلول

لذا أود أن أعرف ما إذا كان أي من الخيارات المذكورة أعلاه سيؤدي إلى تسريع التطبيق إذا قمت بتعيينها على "صحيح"؟

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

يقوم المترجمون بالفعل بإجراء الكثير (!) من التحسينات الرائعة، بموافقتك أو بدونها.أفضل رهان لك هو كتابة التعليمات البرمجية الخاصة بك بطريقة نظيفة ومنظمة، والقلق بشأن قابلية الصيانة والتوسيع.وكما أحب أن أقول:قم بالبرمجة الآن، وقم بالتحسين لاحقًا.

نصائح أخرى

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

نصيحتي الأخرى، استخدم مترجمًا مختلفًا.تتمتع Intel بسمعة طيبة باعتبارها مترجمًا محسنًا.تعد VC وGCC بالطبع من الخيارات الرائعة أيضًا.

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

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

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

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