سؤال

هل عادة تعيين مترجم لتحسين السرعة القصوى أو أصغر رمز الحجم ؟ أو يمكنك يدويا تكوين الفرد الأمثل الإعدادات ؟ لماذا ؟

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

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

المحلول

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

باختصار, تحسين حجم عمل أفضل في قديم Pentium3 المحمول محدودة من ذاكرة الوصول العشوائي, ولكن على حسابي الرئيسي سطح المكتب آلة مع Core2Duo, O2-أعطى أفضل النتائج على الإطلاق.

هناك أيضا نصي صغير إذا كنت مهتما في x86 (32 بت) محددة الأعلام التي هي الأكثر الأمثل.

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

A relative graph of fitnesses:

   Acovea Best-of-the-Best: **************************************                (2.55366)
     Acovea Common Options: *******************************************           (2.86788)
                       -O1: **********************************************        (3.0752)
                       -O2: ***********************************************       (3.12343)
                       -O3: ***********************************************       (3.1277)
           -O3 -ffast-math: **************************************************    (3.31539)
                       -Os: *************************************************     (3.30573)

(لاحظ أن وجدت -نظام التشغيل أبطأ على هذا Opteron النظام.)

نصائح أخرى

أنا أفضل أن استخدام الحد الأدنى من حجم.قد تكون الذاكرة رخيصة ، ذاكرة التخزين المؤقت لا.

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

أعتقد أن هذه التقنية متوفرة علنا في مقابل ولكن أنا لست متأكدا 100٪.

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

أنا استخدم دول مجلس التعاون الخليجي و تميل إلى ترك الأمر على "-O2" الذي هو "الأكثر أمانا" المستوى الأمثل و تفضل السرعة على الحد الأدنى من حجم.

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

مايكروسوفت لجميع السفن في C/C++ البرمجيات الأمثل الحجم.بعد القياس اكتشفوا أنه في الواقع يعطي سرعة أفضل (بسبب ذاكرة التخزين المؤقت المحلية).

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

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

الأداء التعليمات البرمجية الحرجة, التي - على خلاف ذلك اختيار أي و لا تتعب نفسك.

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

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

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

التغيير والتبديل في إعدادات مترجم هكذا هو الأمثل.على مبدأ أن "من السابق لأوانه الأمثل هو أصل كل الشرور" لا تهتم به حتى البرنامج هو بالقرب النهائي الشحن الدولة و لقد اكتشفت أنه ليس سريع بما فيه الكفاية-أيأبدا تقريبا.

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