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ính | Kiểu | Mô tả |
|---|---|---|
Elapsed | TimeSpan | Thời gian trôi qua (định dạng dễ đọc) |
ElapsedMilliseconds | long | Tổng milliseconds (int64) |
ElapsedTicks | long | Tổng ticks (đơn vị rawn nhất) |
IsRunning | bool | Đ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.