2010-09-24 36 views
5

Cách thuận tiện nhất để đo chính xác thời gian đồng hồ treo tường trong .NET là gì? Tôi đang tìm một cái gì đó với độ chính xác micro giây nếu có thể (10^-6 giây).Đo chính xác thời gian đồng hồ treo tường trong .NET

+2

Đã trôi qua "thời gian đồng hồ treo tường" tương đương với thời gian đã trôi qua? – spender

+0

@spender: [Đồng hồ treo tường] (http://en.wikipedia.org/wiki/Wall_clock_time) là tổng thời gian cần thiết để hoàn thành một tác vụ. –

+0

Ah. OK, trái ngược với thời gian của CPU. Giờ đã hiểu. – spender

Trả lời

7

System.Diagnostics.Stopwatch là đặt cược tốt nhất của bạn. Tuy nhiên, độ chính xác chính xác sẽ phụ thuộc vào phần cứng trên máy tính bạn đang sử dụng, tức là có sẵn bộ đếm hiệu suất có độ phân giải cao hay không. (Bạn có thể kiểm tra với trường IsHighResolution.)

sử dụng mẫu:

Stopwatch sw = Stopwatch.StartNew(); 
// Do stuff here 
sw.Stop(); 
TimeSpan time = sw.Elapsed; 

Lưu ý rằng nếu bạn sử dụng ElapsedTicks bất động sản, đó là đo bằng timer ve mà không phải là giống như ve sử dụng trong DateTimeTimeSpan. Điều đó khiến tôi hiểu trước - đó là lý do tại sao tôi luôn sử dụng ElapsedMilliseconds hoặc thuộc tính Elapsed.

+0

Điều này có vẻ hoàn hảo. Trên hệ thống của tôi, trường 'Tần số' tuyên bố độ phân giải tốt hơn một phần mười của một micro giây. – pauldoo

0

Đây là một lớp mà cung cấp chờ đợi trên quy mô này kể từ khi tôi giả định vào cuối đó là những gì bạn cần làm. Thời gian của CPU StopWatch @ CPU có thể sẽ nhận được APC và bạn sẽ bỏ lỡ thời gian kết thúc của mình.

Xem https://stackoverflow.com/questions/15725711/obtaining-microsecond-precision-using-net-without-platform-invoke

Đối với một cách tốt hơn IMHO

Hãy cho tôi biết nếu bạn tìm cách khác!

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