C++ Academy · درس

التنميط باستخدام perf وvtune وSanitizers

نَمِّط البرامج باستخدام perf وIntel VTune، واكتشف الأخطاء باستخدام AddressSanitizer.

الدرس 3 من 415 خطوة

التنميط باستخدام perf وvtune وSanitizers درس مجاني في C++ Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C++ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C++ Academy 4 دروس في المجموع.

لماذا نحلّل الأداء؟

غالبًا ما يكون الحدس بشأن الأداء خاطئًا. حلّلوا الأداء للعثور على الاختناقات الفعلية، ثم حسّنوا الشفرة.

Linux: perf

‏perf أداة لتحليل الأداء بالمعاينة، وتتميز بعبء إضافي منخفض، وتأتي مع Linux. شغّلوها على أي ملف ثنائي بُني مع معلومات التصحيح.

g++ -O2 -g main.cpp -o main
perf record ./main
perf report

‏perf stat

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

perf stat -e cycles,instructions,cache-misses,branch-misses ./main

المخططات اللهبية

حوّلوا بيانات perf إلى مخطط لهبي يوضح مواضع استهلاك الوقت.

perf record -F 99 -g ./main
perf script | stackcollapse-perf.pl | flamegraph.pl > flame.svg

macOS: Instruments

توفر Instruments من Apple تحليلًا زمنيًا للأداء، وتحليل التخصيصات، والتسريبات، وغير ذلك. وهي مجانية مع Xcode.

Windows: VTune Profiler

يوفر Intel VTune (مجانًا للاستخدام الشخصي) تحليلًا تفصيليًا للبنية الدقيقة، بما في ذلك توقفات خط الأنابيب وإخفاقات ذاكرة التخزين المؤقت والكتل الساخنة. وهو متعدد المنصات.

أدوات التعقيم تكشف الأخطاء

أدوات التعقيم هي أدوات فحص وقت التشغيل المدمجة في clang وgcc. أعيدوا الترجمة باستخدام الوسم المناسب:

  • -fsanitize=address — AddressSanitizer لاكتشاف أخطاء الذاكرة
  • -fsanitize=thread — ThreadSanitizer لاكتشاف تعارضات البيانات
  • -fsanitize=undefined — UB Sanitizer لاكتشاف تجاوز السعة الموقّع وغير ذلك
  • -fsanitize=memory — MSan لاكتشاف القراءات غير المهيّأة

مثال على AddressSanitizer

يكتشف تجاوزات سعة المخازن المؤقتة، والاستخدام بعد التحرير، والتحرير المزدوج، مع تتبعات المكدس.

g++ -fsanitize=address -g main.cpp
./a.out
# Output points exactly at the bug

وقت الترجمة مقابل وقت التشغيل

يكتشف التحليل الساكن (clang-tidy وcppcheck) الأخطاء دون تشغيل البرنامج. وتكتشف أدوات التعقيم أخطاء وقت التشغيل. استخدموا كليهما، فهما يكتشفان مشكلات مختلفة.

تحليل التخصيصات

تكون التخصيصات على الكومة بطيئة. استخدموا perf أو massif من Valgrind أو Heaptrack للعثور على مواضع التخصيص الساخنة وتقليلها.

قراءة ملفات الأداء التعريفية

ركّزوا على الدوال الرئيسية في الملف التعريفي. ثم افحصوا شجرة الاستدعاءات لفهم السياق. وعادةً لا تستحق الفروق الصغيرة، التي تبلغ بضعة بالمئة هنا وهناك، التحسين.

تحليل الأداء المستمر

في بيئات الإنتاج، تجمع أدوات تحليل الأداء القائمة على المعاينة مثل Pyroscope أو Pixie البيانات باستمرار مع عبء إضافي منخفض. وبذلك تكتشفون التراجعات قبل أن تضر بالمستخدمين.

سير العمل

حلقة التحسين:

  1. قيسوا الأداء لتحديد عنق الزجاجة
  2. كوّنوا فرضية
  3. غيّروا شيئًا واحدًا
  4. قيسوا الأداء مجددًا

من دون قياس، أنتم تخمّنون.

تحقق سريع

أي وسم للمترجم يفعّل AddressSanitizer؟

مراجعة

حلّلوا الأداء باستخدام perf (Linux) أو Instruments (macOS) أو VTune (متعدد المنصات) للعثور على الاختناقات. واستخدموا أدوات التعقيم لاكتشاف أخطاء الذاكرة والخيوط مبكرًا. قيسوا الأداء، وضعوا فرضية، وغيّروا، ثم قيسوا مجددًا.

البدء مجانًا

تعلم C++ مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
51
الدروس
203

الأسئلة الشائعة

هل درس «التنميط باستخدام perf وvtune وSanitizers» مجاني؟

نعم — نص درس «التنميط باستخدام perf وvtune وSanitizers» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C++ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C++ Academy 4 دروس في المجموع.

ماذا ستتعلم في «التنميط باستخدام perf وvtune وSanitizers»؟

نَمِّط البرامج باستخدام perf وIntel VTune، واكتشف الأخطاء باستخدام AddressSanitizer. تتمرن على C++ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C++ Academy؟

لا تُشترط خبرة سابقة. C++ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «التنميط باستخدام perf وvtune وSanitizers»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C++ Academy هذا؟

نعم. كل درس في C++ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تخطيطات بيانات ملائمة لذاكرة التخزين المؤقت
  2. التنبؤ بالتفرّعات والحلقات الساخنة
  3. التنميط باستخدام perf وvtune وSanitizers
  4. القياس الدقيق للأداء باستخدام Google Benchmark
← العودة إلى C++ Academy