0Pricing
C# Academy · บทเรียน

พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)

วัดโค้ดด้วย Stopwatch สร้างขอบเขตจับเวลาเล็ก ๆ ทำความเข้าใจรหัสเชื่อมโยงการติดตาม และเรียนรู้แนวทางพื้นฐานสำหรับการวัดประสิทธิภาพระดับไมโคร

พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด) เป็นบทเรียน C# Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C# Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

พื้นฐานการจับเวลาและการติดตาม

เป้าหมาย:

  • วัดเส้นทางการทำงานที่ใช้เวลามากด้วยนาฬิกาจับเวลา
  • เพิ่มขอบเขตการจับเวลาขนาดเล็กสำหรับบล็อกโค้ด
  • ใช้รหัสเชื่อมโยงการติดตามเพื่อเชื่อมเหตุการณ์
  • หลีกเลี่ยงการวัดที่สร้างเสียงรบกวนมาก

การสาธิตนาฬิกาจับเวลา

ใช้นาฬิกาจับเวลาเพื่อวัดเวลาโค้ด อุ่นเครื่องก่อน แล้วทำงานซ้ำเพื่อเฉลี่ยสัญญาณรบกวนจาก 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 เพื่อดูระยะเวลาของส่วนที่มีชื่อเรียก โดยไม่ต้องเขียนโค้ดนาฬิกาจับเวลาซ้ำ

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();
    }
  }
}

การสาธิต ID การเชื่อมโยง

กำหนดID การเชื่อมโยง (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);
  }
}

ภาพรวมการทำโปรไฟล์

  • ตัวทำโปรไฟล์แบบสุ่มตัวอย่าง: บันทึกภาพรวมสแตกเป็นระยะ ๆ โดยมีภาระการทำงานต่ำ
  • การติดตั้งเครื่องมือ: วัดบล็อกที่ต้องการโดยเฉพาะ เช่น นาฬิกาจับเวลาและขอบเขตการจับเวลา
  • เริ่มจากการสุ่มตัวอย่างในภาพรวม แล้วตรวจสอบด้วยการจับเวลาเฉพาะจุด

แนวทางที่ดีในการวัด

เคล็ดลับ:

  • วัดในบิลด์รุ่นเผยแพร่ที่เปิดใช้การปรับให้เหมาะสม
  • หลีกเลี่ยง Console.WriteLine ภายในโค้ดที่จับเวลา
  • ทำงานซ้ำหลายครั้ง และรายงานค่าเฉลี่ย
  • จับเวลาโดยใช้ขนาดข้อมูลเข้าที่สมจริง

กฎการวัดประสิทธิภาพระดับจุลภาค

ตรวจสอบสั้น ๆ: แนวทางพื้นฐานที่ดีเมื่อวัดประสิทธิภาพโค้ดระดับจุลภาคด้วยนาฬิกาจับเวลาคืออะไร

สรุปทบทวน

สรุปทบทวน: ใช้นาฬิกาจับเวลาและขอบเขตการจับเวลาขนาดเล็กเพื่อวัดเวลาของบล็อกโค้ด เพิ่มID การเชื่อมโยงเพื่อเชื่อมการติดตาม และวัดอย่างเป็นระบบด้วยการอุ่นเครื่อง การทำซ้ำ และรุ่นเผยแพร่

คำถามที่พบบ่อย

บทเรียน “พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C# Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C# Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)”

วัดโค้ดด้วย Stopwatch สร้างขอบเขตจับเวลาเล็ก ๆ ทำความเข้าใจรหัสเชื่อมโยงการติดตาม และเรียนรู้แนวทางพื้นฐานสำหรับการวัดประสิทธิภาพระดับไมโคร คุณปฏิบัติ C# Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C# Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C# Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C# Academy นี้ได้ไหม

ได้ บทเรียน C# Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. นามธรรมสำหรับการบันทึกเหตุการณ์ และ Debug/Trace
  2. พื้นฐานการทำโปรไฟล์และการติดตาม (แนวคิด)
  3. รูปแบบการตรวจสอบและการยืนยันความถูกต้อง
← กลับไปที่ C# Academy