سؤال

ماذا تقترح أفضل أداة التعريف C/C++ رمز وتحديد الأجزاء التي تأخذ معظم الوقت.حاليا, أنا فقط الاعتماد على سجلات ولكن بالطبع المعلومات ليست دقيقة لأن أي تأخير لا لزوم لها قدم.

ويفضل الأداة سوف تكون أيضا قادرة على الكشف عن/تشير إلى المجالات التي يمكن أن يكون الأمثل ، إذا كانت هذه الأداة موجودة.

منصة:لينكس

التطبيق يجب أن تستخدم على جزءا لا يتجزأ من البيئة لذلك يجب أن تكون خفيفة الوزن و الخارجية (ليس البرنامج المساعد على بعض IDE).

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

المحلول

ويمكنني أن أوصي بحرارة callgrind بالاشتراك مع <لأ href = "HTTP: //kcachegrind.sourceforge.net/html/Home.html "يختلط =" نوفولو noreferrer "> KCachegrind .

نصائح أخرى

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

ولقد قدمت تجارب جيدة باستخدام التعريف من مايكروسوفت البصرية C ++، هناك برامج خارجية أخرى مثل <وأ href = "http://www.intel.com/cd/software/products/asmo-na/eng/ 239144.htm "يختلط =" نوفولو noreferrer "> إنتل VTune أيضا، ولكن معظمهم ليسوا أحرارا.

ويعتمد على المنصة. إذا كنت تستخدم MSVC، بعض الإصدارات منها لديه التعريف بنيت فيها AMD و Intel لديهما المحللون المتاحة وكذلك (CodeAnalyst وVTune).

في لينكس، واحد فقط لقد استعملت هو gprof، ولكن أعرف أن هناك آخرين (وأعتقد أن تلك AMD أو إنتل قد تتوفر في الإصدارات ينكس جدا)

وبالطبع جناح Valgrind بأكمله قد تكون مفيدة جدا. بعض الأدوات مثل callgrind أو cachegrind يمكن أن يوفر لك الكثير من المعلومات حول الأداء.

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

وأحيانا يكفي لتشغيل فقط في المصحح واضغط على Ctrl-ج، والنظر في تتبع المكدس وتكرار هذا ربما 4 مرات.

إذا كنت دائما في نفس الجزء من الكود ثم كنت قد وجدت المكان الذي ربما قضى فترة طويلة من الوقت.

من الواضح انك تريد أمرين:

  1. إلى التشكيل الجانبي الخاص بك رمز & قياسه.

  2. للكشف عن المناطق التي يمكن أن يكون الأمثل.

هذه هي مشاكل مختلفة.أنها ليست هي نفسها ، على الرغم من ما كنت قد قيل.

المشكلة (1) العديد من المحللون المقترح.

المشكلة (2) المحللون تساعد بشكل غير مباشر فقط.
هناك أبسط من ذلك بكثير و عادة ما تكون أكثر فعالية تقنية.

انظر هنا

وام صغيرا أذهب مع gprof / oprofile، إذا كنا نتحدث عن العالم UNIX.

وأنت بحاجة إلى إعادة ترجمة التطبيق الخاص بك (على الأقل مع gprof).

Gprof

Oprofile

إذا كنت على ويندوز، أقترح AQTime . يدعم مترجم تقريبا كل هناك، بما في ذلك .NET، دلفي وVB (والمجمعين جميع C ++، وبطبيعة الحال (...) وهو مجرد أداة أفضل التنميط حاولت من أي وقت مضى وانها ليست سوى التعريف الأداء

لقياس الأداء oprofile هو خيار جيد كما يوجد البرنامج المساعد سهل الاستعمال للكسوف في أدوات المشروع لينكس .

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