2010-04-06 35 views

Trả lời

10

Bạn có thể sử dụng System.Diagnostics.Stopwatch để thực hiện những gì mình muốn.

+0

+1 để liệt kê tham chiếu. –

37

Bạn thường không sử dụng bộ hẹn giờ cho việc này - bạn sử dụng Stopwatch.

Stopwatch sw = Stopwatch.StartNew(); 
// Do work 
sw.Stop(); 
TimeSpan elapsedTime = sw.Elapsed; 

Nếu bạn đang thực hiện điểm chuẩn của một cái gì đó tương đối nhanh, bạn nên thực hiện nhiều lần, rất nhiều thời gian (nghĩa là tôi thường dành 5-30 giây). Điều đó không phải lúc nào cũng khả thi, được thừa nhận - và có nhiều sự tinh tế hơn ảnh hưởng đến hiệu suất thế giới thực (chẳng hạn như các lần truy cập/lần truy cập bộ nhớ cache) mà điểm chuẩn nhỏ thường bỏ qua.

Về cơ bản, hãy cẩn thận - nhưng Stopwatch có lẽ là điểm khởi đầu tốt nhất trong nhiều trường hợp.

+1

+1 cho đồng hồ bấm giờ.StartNew(). Không biết về điều đó. – Joop

+0

"Bạn thường không" so với "Bạn thường không". Khai sáng cho tôi: cả hai đều đúng ngữ pháp? –

+1

@Martinho: Tôi * nghĩ * cả hai đều được chấp nhận. Có thể người ta được ưu tiên hơn người kia, mặc dù tôi sẽ không biết cái nào :) –

0

Bạn có thể sử dụng số Timer và đính kèm một hành động vào sự kiện Elapsed. Ví dụ bạn có thể hủy bỏ chủ đề của bạn ... hmm nếu bạn không sợ hậu quả ... Thực ra bạn có thể làm điều đó nếu bạn muốn đặt thời gian chờ cho quá trình của bạn chẳng hạn.

Nếu chỉ để theo dõi, Đồng hồ bấm giờ chỉ phù hợp với nhu cầu của bạn

+0

Đọc thú vị về việc hủy các chủ đề: http://blogs.msdn.com/ericlippert/archive/2010/02/22/should-i-specify-a-timeout.aspx và http://blogs.msdn.com/ericlippert /archive/2010/02/25/careful-with-that-axe-part-two-what-about-exceptions.aspx –

Các vấn đề liên quan