سؤال

أنا أحاول ضبط أداء التطبيق الخاص بي.و أنا الغريب ما هي الوسائل تأخذ أطول ، وبالتالي ينبغي النظر أكثر من أي فرص التحسين.

هل هناك أي القائمة أدوات مجانية من شأنها أن تساعد لي تصور الاستدعاءات و متى كل طريقة أخذ لاستكمال ؟ أنا أفكر في شيء أن يعرض الدعوة كومة مكدسة شريط الرسم البياني أو treemap لذلك فمن السهل أن نرى أن MethodA() استغرق 10 ثانية لإكمال لأنه يسمى MethodB() و طريقة(ج) التي أخذت 3 و 7 ثوان كاملة.

لا شيء مثل هذا الوجود ؟

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

المحلول

نعم ، ما يطلق عليه أداء المحللون.تحقق من RedGate النمل JetBrains' dotTrace ليس مجاني ولكن رخيصة جدا و أفضل من أي بديل مجاني رأيت.

نصائح أخرى

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

طريقة ويقاس هذا هو إما عن طريق القياس أو أخذ العينات داخل منشئ ملفات التعريف.

الأجهزة

الأجهزة لا الخام أي ما يعادل إعادة كتابة كافة التعليمات البرمجية الخاصة بك إلى القيام بما يلي:

public void Foo()
{
   //Code
}

في

public void Foo()
{
   InformTheProfilingCodeThatFooStarted();
   //Code
   InformTheProfilingCodeThatFooEnded();
}

لأن التعريف يعرف متى يبدأ كل شيء وتوقف يمكن أن تدار كومة من عند thisngs البدء والتوقف وتوفير هذه المعلومات في وقت لاحق.كثيرة تسمح لك أن تفعل هذا في مستوى خط (عن طريق القيام كبير نفس الشيء ولكن instrumenting أكثر قبل كل سطر.

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

أخذ العينات

نهج بديل هو أخذ العينات.

بدلا من محاولة الحصول على 100 ٪ دقيقة الدعوة البيانية ولكن مع أقل من دقيقة الفعلية مرات هذا النهج بدلا من ذلك يعمل على أساس أنه إذا كان الاختيار على أساس منتظم ما يجري في التطبيق الخاص بك يمكن أن تعطيك فكرة جيدة عن كم من الوقت sepnds في مختلف الوظائف دون الحاجة إلى إنفاق الكثير من الجهد العمل هذا.معظم العينات المحللون أعرف كيف 'تحليل' مكدس الاستدعاءات عندما يقطع البرنامج حتى أنها يمكن أن لا تزال تعطي فكرة معقولة ما هي الدعوة التي تعمل وكم من الوقت هذا يبدو أن تأخذ ولكن سوف لا يكون قادرا على أن أقول لكم ما إذا كان هذا (أقول) 10 مكالمات فو() الذي قضى عشر مكالمات بار() أو مكالمة واحدة فو() الذي كان في مكالمة واحدة إلى بار() الذي حدث إلى آخر طالما تم أخذ عينات من 10 مرات.

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

أنا أعرف واحد فقط مجانا العينات عن التعريف .صافي قانون الحرة القابلة لإعادة التعريف الذي يرتبط مع VS 2008 فريق إطلاق نظام (ولكن التي يمكن تحميلها بشكل منفصل).إخراج الناتج لا يمكن مشاهدتها بسهولة مع أي شيء ولكن (مكلفة جدا) فريق نظام الإصدار من Visual Studio.

البوابة الحمراء النمل لا يدعم أخذ العينات (في هذا الوقت) ، جت العقول (dotTrace) و MS Visual Studio فريق النظام قد المحللون أن دعم كل من الأساليب.التي تفضل على التكلفة أساس المنفعة هو مسألة رأي.

هذه هي طريقة استخدامها. إذا كان لديك IDE مع زر الإيقاف المؤقت يكلف شيء يعمل بشكل جيد جدا.

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

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

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

هنا مثال على استخدامه.

P. S.نتوقع النسب المئوية أن تضيف ما يصل إلى أكثر من 100%.الطريق إلى التفكير في النسب المئوية ، إذا كان البيان أو الروتين على المكدس X% من الوقت (كما قدرت من عدد صغير من العينات) تقريبا كم الجدار على مدار الساعة الوقت سوف يتقلص إذا كان البيان أو الروتينية يمكن أن يستغرق وقتا أقل كثيرا.

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