سؤال

أريد أن أفعل بعض القياس من C# العملية ، لكن لا تريد استخدام الوقت ناقلات بلدي أريد أن نحصي عدد IL التعليمات التي يتم إعدامهم في استدعاء الأسلوب.هل هذا ممكن ؟

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

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

المحلول

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

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

نصائح أخرى

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

حتى باستخدام القائمة IL/تمكنت الجمعية القراءة/الكتابة المشاريع ستكون هذه المهمة شاقة جدا لسحب قبالة.

بالطبع, بعض الإرشادات التي العداد الخاص بك المسجلة قد تحصل الأمثل بعيدا خلال just-in-time ترجمة إلى x86/ia64/x64, ولكن هذا هو خطر عليك محاولة التعريف على أساس مجردة lanaguage مثل IL.

هل يمكن استخدام ICorDebug التي تدار من واجهة.تشاك كسر نقطة في بداية طريقة programmaticly الخطوة من خلال رمز حتى يترك الأسلوب.

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

يمكنني استخدام رمز المقاييس إضافة إلى العاكس

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

تثبيت البرنامج المساعد.حدد الجمعية و طريقة تحميل المقاييس.وسوف تظهر لك الشبكة مع CodeSize, CyclomaticComplexity, # التعليم, الخ.

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

(قوس هو سلسلة من التعليمات التي لا يمكنك القفز في أو خارج.إذا كنت تنفيذ التعليمة الأولى ، عليك دائما لتنفيذ الماضي ، إلخ.)

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