0Pricing
C# Academy · درس

أساسيات تحليل الأداء والتتبعات (مفاهيم)

قِس الشيفرة باستخدام Stopwatch، وأنشئ نطاقات توقيت صغيرة، وافهم معرّفات ربط التتبعات، وتعلّم أساسيات الانضباط في الاختبارات المعيارية الصغيرة.

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

أساسيات التوقيت والتتبّع

الهدف:

  • قياس المسارات الساخنة باستخدام Stopwatch
  • إضافة نطاقات توقيت صغيرة للكتل
  • استخدام معرّفات ربط التتبّع لربط الأحداث
  • تجنّب القياسات المزعجة

عرض توضيحي لـ Stopwatch

استخدم Stopwatch لقياس زمن الرمز؛ أجرِ إحماءً أولًا وكرّر العمل لتقليل ضوضاء JIT.

using System;
using System.Diagnostics;
using System.Threading;

// Simple loop timing with warmup; C# 6 compatible.
public class Program
{
  static int Work(int n)
  {
    int s = 0;
    for (int i = 0; i < n; i++) s += i; // small CPU work
    return s;
  }

  public static void Main(string[] args)
  {
    // Warm up (JIT/caches)
    Work(10000);

    var sw = Stopwatch.StartNew();
    for (int r = 0; r < 10; r++)
    {
      Work(20000);
    }
    sw.Stop();

    Console.WriteLine("Elapsed ms (10 runs): " + sw.ElapsedMilliseconds);
  }
}

مساعد نطاق التوقيت

غلّف الكتل داخل TimeScope لمعرفة مدة الأقسام المسماة من دون تكرار رمز Stopwatch.

using System;
using System.Diagnostics;

// A small scope that times a block and prints on dispose.
public sealed class TimeScope : IDisposable
{
  private readonly string _name;
  private readonly Stopwatch _sw;

  public TimeScope(string name)
  {
    _name = name;
    _sw = Stopwatch.StartNew();
  }

  public void Dispose()
  {
    _sw.Stop();
    Console.WriteLine(_name + " took " + _sw.ElapsedMilliseconds + " ms");
  }
}

public class Program
{
  static void DoWork()
  {
    // pretend work
    long s = 0;
    for (int i = 0; i < 300000; i++) s += i;
    if (s == -1) Console.WriteLine();
  }

  public static void Main(string[] args)
  {
    using (new TimeScope("DoWork"))
    {
      DoWork();
    }
  }
}

عرض توضيحي لمعرّف الربط

عيّن معرّف ربط (ActivityId) لربط رسائل التتبّع ذات الصلة عبر الاستدعاءات.

using System;
using System.Diagnostics;

// Use a correlation ID so related trace lines can be grouped.
public class Program
{
  public static void Main(string[] args)
  {
    Trace.Listeners.Clear();
    Trace.Listeners.Add(new ConsoleTraceListener());

    Guid id = Guid.NewGuid();
    Trace.CorrelationManager.ActivityId = id;

    Trace.TraceInformation("Start request");
    // ... do work
    Trace.TraceInformation("Processing step A");
    Trace.TraceInformation("Processing step B");
    Trace.TraceInformation("End request");

    Console.WriteLine("ActivityId: " + id);
  }
}

نظرة عامة على تحديد الأداء

  • أدوات تحديد الأداء بأخذ العينات: تلتقط لقطات لمكدس الاستدعاءات دوريًا مع حمل منخفض
  • القياس بالأدوات: يقيس كتلًا محددة باستخدام Stopwatch أو نطاقات التوقيت
  • ابدأ بنطاق واسع باستخدام أخذ العينات، ثم أكّد النتائج بقياس موجّه

ممارسات القياس السليم

نصائح:

  • قِس في إصدار Release مع تفعيل التحسينات
  • تجنّب استخدام Console.WriteLine داخل الرمز المُقاس
  • كرّر التشغيلات، وأبلغ عن المتوسطات
  • قِس أحجام إدخال واقعية

قاعدة اختبار الأداء الدقيق

تحقّق سريع: ما الممارسة الأساسية الجيدة عند إجراء اختبار أداء دقيق للرمز باستخدام Stopwatch؟

الخلاصة

الخلاصة: استخدم Stopwatch ونطاقات التوقيت الصغيرة لقياس زمن الكتل؛ وأضف معرّف ربط لربط التتبّعات؛ وقِس بطريقة سليمة، مع الإحماء والتكرار وفي إصدار Release.

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

هل درس «أساسيات تحليل الأداء والتتبعات (مفاهيم)» مجاني؟

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

ماذا ستتعلم في «أساسيات تحليل الأداء والتتبعات (مفاهيم)»؟

قِس الشيفرة باستخدام Stopwatch، وأنشئ نطاقات توقيت صغيرة، وافهم معرّفات ربط التتبعات، وتعلّم أساسيات الانضباط في الاختبارات المعيارية الصغيرة. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

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

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

كم من الوقت يستغرق درس «أساسيات تحليل الأداء والتتبعات (مفاهيم)»؟

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

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

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

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

  1. تجريدات التسجيل وDebug/Trace
  2. أساسيات تحليل الأداء والتتبعات (مفاهيم)
  3. أنماط الحواجز والتحقق
← العودة إلى C# Academy