سؤال

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

الآن, كيف مهنية التعريف العمل ؟ هل preprocess رمز إدراج نقاط التفتيش أو أشياء من هذا القبيل ؟ هل قراءة التعليمات البرمجية الثنائية مع تصحيح البيانات للقبض حيث الوظيفة ؟

شكرا

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

المحلول

هناك الكثير من مختلف المحللون والتي تعمل بطرق مختلفة.

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

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

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

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

نصائح أخرى

وهناك نوعان من الاستراتيجيات التنميط الشائع (للغات أساس VM-على أي حال): القياس وأخذ العينات

.

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

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

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

وكما كتب جون السكيت أعلاه أن هناك استراتيجيتين: القياس وأخذ العينات.

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

ويتم أخذ العينات من التعريف ويبدو في الشفرة الثنائية. والتعريف يمكن أيضا تقنيات مثل خطاف أو فخ يندوز الأحداث / رسائل لغرض التنميط.

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

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

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

ومما سبق تحديد الموارد التي يتم الحصول على خنق.

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

ولgprof في * لا شيء، في ترجمة والارتباط الوقت باستخدام -pg، يتم حقن بعض رمز إضافية إلى رمز الكائن. ثم عن طريق تشغيل gprof، يتم إنشاء ملف تقرير رمز حقن.

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