Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Lớp Stopwatch trong C#


Giới thiệu

Stopwatch trong namespace System.Diagnostics cung cấp bộ đếm thời gian độ chính xác cao (high-resolution) để đo hiệu suất code. Sử dụng bộ đếm phần cứng (hardware counter) nếu có, fallback về system timer.

Ví dụ cơ bản

var sw = Stopwatch.StartNew();
long ticks = sw.ElapsedTicks;
Console.WriteLine(ticks);

Ví dụ hoàn chỉnh

using System;
using System.Diagnostics;

public class Demo
{
    public static void Main()
    {
        var sw = Stopwatch.StartNew();
        long ticks = sw.ElapsedTicks;
        Console.WriteLine(ticks);
    }
}

Kết quả

582

Các thuộc tính chính

Thuộc tínhKiểuMô tả
ElapsedTimeSpanThời gian trôi qua (định dạng dễ đọc)
ElapsedMillisecondslongTổng milliseconds (int64)
ElapsedTickslongTổng ticks (đơn vị rawn nhất)
IsRunningboolĐang chạy hay không

Chuyển đổi Ticks sang TimeSpan

// 1 tick = 1 / Stopwatch.Frequency giây
TimeSpan ts = TimeSpan.FromTicks(sw.ElapsedTicks);
// Hoặc đơn giản:
TimeSpan ts = sw.Elapsed;

Ví dụ đo hiệu suất phương thức

Stopwatch sw = Stopwatch.StartNew();
// Code cần đo
DoWork();
sw.Stop();
Console.WriteLine($"Thời gian thực thi: {sw.ElapsedMilliseconds} ms");

Lưu ý

  • StartNew() = new Stopwatch() + Start().
  • Độ phân giải phụ thuộc vào phần cứng (thường < 1 microsecond).
  • Không dùng cho đo thời gian thực (wall clock) dài hạn - dùng DateTime.
  • Thread-safe cho đọc, nhưng không nên chia sẻ instance giữa nhiều thread ghi.