لينكس التنميط مع محلل الأداء
الزملاء ، أجد أنه من المفيد التحدث عن ملف تعريف رمز مناسب ومجاني لنظام Linux / Solaris. إنها جزء من حزمة Sun / Oracle Developer Studio [1]. في رأيي ، فإن بعض الأجزاء الأخرى من بيئة التطوير هذه غير مجدية إلى حد ما ، لكن المُنشئ ، الذي يُدعى Performance Analyzer ، ناجح للغاية. إنه سهل الاستخدام ، تحليل واضح ومناسب للنتائج. في رأيي ، لا يزال المحلل متفوقًا على العديد من نظرائه في Linux. باستخدام هذه الأداة ، يبدو استخدام gprof مثل نزوة غريبة ومضيعة للوقت.
إذا كنت لا تخطط لاستخدام محلل الأداء على الفور ، فلا يمكنك قراءة المزيد. فقط تذكر أن مثل هذا المنتج موجود. إذا كان من الممتع إلقاء نظرة ، فمرحباً بك.
يتكون ملف التعريف من جزأين: التجميع - بدء تشغيل التطبيق وجمع البيانات وتسجيل نتائج التجربة ؛ analyser عبارة عن واجهة رسومية تقرأ بيانات التجربة وتوفر فرصًا للتحليل المريح للنقاط الساخنة وأشجار استدعاء الوظائف.
باختصار حول المزايا والعيوب الهامة:
الايجابيات:
- مجانا
- لا يتطلب إعادة تجميع الشفرة وربط الملف القابل للتنفيذ ؛
- يعمل مع جنو ومجمعي الشمس ؛
- لا يغير وقت تنفيذ البرنامج عند جمع البيانات ؛
- لديها واجهة رسومية بديهية.
- مجهزة واجهة سطر الأوامر المتقدمة للتحليل التلقائي.
- يسمح لك أن ننظر بسرعة في نتيجة المترجم.
- لديه ملف تعريف إحصائي دقيق بما فيه الكفاية حتى بالنسبة للأجزاء غير الشاقة ؛
- إجراء تحليل مريح وتحليل مقارن للعديد من برامج الإطلاق ؛
- لا تشوه النتائج.
بعض السلبيات:
- الواجهة الرسومية مكتوبة بلغة جافا. في بعض الأحيان يتعطل عند التمهيد ، يساعد إعادة التشغيل البسيطة ؛
- يتم قياس وقت وحدة المعالجة المركزية فقط ؛ إذا كان من الممكن إصلاح النواة ، فيمكن إزالة هذا التقييد ؛
- في التطبيقات متعددة الخيوط ، يكون الوقت الذي تستغرقه الوظيفة هو مجموع الوقت الذي تقضيه هذه الوظيفة في كل سلسلة رسائل ؛
- المحلل الإحصائي صاخب ويجعل من الصعب تحسين الدورات.
بشكل رسمي ، يدعم Oracle Developer Studio فقط Solaris و Oracle Linux. في الواقع ، لقد نجحت في استخدامه على Redhat و CentOS و Ubuntu. جمع / محلل اعتدت فقط لتحسين تطبيقات C / C ++ / Fortran. تنص الوثائق على أن الأداة تعالج أيضًا مشاريع Java.
تشغيل وتحليل النتائج
تحليل الكود ، بالطبع ، يبدأ ببناء ملف قابل للتنفيذ. لا يجب حذف أسماء الوظائف فيه ، وإلا لن يكون هناك شيء لتحليله. هناك حاجة إلى رموز التصحيح إذا كنت تريد إلقاء نظرة على سطور الكود من المحلل. بالطبع ، في المقام الأول ، من المنطقي التعريف باستخدام خيارات التحسين المفضلة لديك. هناك سيناريوهات عندما يكون من المفيد رمز الملف الشخصي دون تحسين ، لكن هذا نادر الحدوث. على سبيل المثال ، إذا كنت بحاجة فقط إلى إلقاء نظرة على الرسم البياني للمكالمات ، وليس قياس الأداء.
لذلك ، لبدء تحتاج ، كالعادة ، لجمع الملف القابل للتنفيذ ، على سبيل المثال:
g++ -O3 –g example.c –o ex
الخطوة الثانية هي الركض من مجموعة:
$pathToSunStudio/collect ./ex
كنتيجة لعمل البروفايل ، يتم إنشاء دليل فرعي لاختبار التجربة. يتم إنشاء N.er في الدليل الحالي ، حيث N هو رقم البداية. (مهم: إذا تمت مقاطعة البرنامج ، فسيتم كسر دليل التجربة).
الخطوة الأكثر متعة هي إطلاق واجهة المستخدم الرسومية:
$pathToSunStudio/analyzer test.1.er
في حالة مثالنا البسيط ، سنتعرف على الكود مباشرةً من محلل واجهة المستخدم الرسومية. مثالنا يحسب مجموع اللوغاريتمات الطبيعية والعشرية للأعداد الصحيحة من 2 إلى 2000000. يتم تمييز الخطوط "الدافئة" باللون الأصفر.

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

كما هو متوقع ، يمكنك التجول حول مكدس الاتصال. في مثالنا البسيط ، نرى أنه في t1 () لقد أتينا من main () ، وتستغرق الدالة sumlog () نصف وقت تنفيذ البرنامج بأكمله.

من الملائم جدًا للتشغيل الآلي أنه من الممكن سحب البيانات باستخدام سطر الأوامر. على سبيل المثال:
er_print -functions test.1.er test.2.er
يطبع وقت تشغيل الوظائف من بداية اثنين.
الجدول مع مرات <p>Functions sorted by metric: Exclusive Total CPU Time Excl. Incl. Name Total Total CPU sec. CPU sec. 4.160 4.160 Total 3.140 3.140 __ieee754_log 0.330 1.990 __ieee754_log10 0.270 1.880 sumlog(int) 0.180 2.280 sumlog10(int) 0.100 1.610 log 0.090 2.100 log10 0.050 0.050 isnan</p> <ol> <li>4.160 __libc_start_main</li> <li>4.160 main</li> <li>1.880 t1(int)</li> <li>2.280 t2(int)
Lifehack. بالنظر بعناية إلى الرسم البياني لمكالمات البرنامج ، يمكنك معرفة الكثير من العمل المفيد وبنية قاعدة كود جديدة لك. غالبًا ما أبدأ العمل مع مشروع جديد من خلال إطلاق "محلل الأداء" ، لأنه يمكنك على الفور فهم الكود الذي يتم تشغيله فعليًا وفي أي سيناريوهات.
استنتاج
Sun / Oracle Studion Performance Analyzer هو أداة قوية ومريحة. في الملاحظة ، أظهرت حالة الاستخدام البسيطة ، وبالطبع ، يمكن لمحلل الأداء أن يفعل الكثير. إذا كنت مهتمًا بمعرفة المزيد ، فراجع الوثائق [2]. الاستنتاج الرئيسي: هذه الأداة موجودة ويمكن أن تكون ذات فائدة كبيرة لمشاريعك.
المراجع:
- أوراكل المطور ستوديو
- Oracle Developer Studio 12.6: محلل الأداء
- محلل الأداء