2009-08-16 27 views

Trả lời

13

Kiểm tra các lớp Stopwatch:

Stopwatch sw = new Stopwatch(); 
sw.Start(); 

// your code here 

sw.Stop(); 
TimeSpan elapsedTime = sw.Elapsed; 
14

Lớp Stopwatch cung cấp thời gian chính xác cao trong .NET. Nó có khả năng đo thời gian với độ nhạy khoảng 100 nano giây (phân số mili giây). Để có được độ phân giải chính xác, hãy đọc giá trị của Stopwatch.Frequency.

var timer = System.Diagnostics.Stopwatch.StartNew(); 
// Run code here. 
var elapsed = timer.ElapsedMilliseconds. 

Ngoài ra, hãy chắc chắn chạy mã của bạn nhiều lần (nhiều lần như là khả thi) để có được một thời gian trung bình tốt hơn, cũng như để giảm tác động của biến động về tải CPU.

8

Như những người khác đã nói, lớp Stopwatch là tốt cho các bên thời gian đơn giản của sự vật. bit khác cần ghi nhớ mặc dù:

  • Mã của bạn có thể tạo ra đối tượng mà sẽ cần phải được thu gom rác thải sau khi bạn đã dừng lại đồng hồ bấm giờ
  • Ngược lại thời gian của bạn có thể bao gồm các đối tượng khác được thu gom rác ngay cả khi họ không có liên quan gì đến mã của bạn
  • Nếu bạn bắt đầu thời gian trước khi bạn chạy phương pháp lần đầu tiên, nó sẽ bao gồm thời gian JIT
  • Nếu bạn dành thời gian rất ngắn, dẫn đến kết quả rất khó lường Tôi có xu hướng thích chạy mã trong nhiều giây, vào tài khoản đối với ứng dụng bị gián đoạn bởi các quy trình khác, v.v.

Nếu bạn quan tâm đến điểm chuẩn, tôi phải thực hiện dự án MiniBench mà không phải là nơi tôi muốn cuối cùng, nhưng đó là một sự khởi đầu. Tôi nói thêm về những gì tôi muốn đạt được với nó trong this blog post.

+0

Cảm ơn cá nhân về MiniBench, Jon - nó đã trở thành công cụ vô giá đối với tôi. –

+0

@C Rogers: Bạn có thể đã sử dụng nó nhiều hơn tôi có! Tôi thực sự sẽ trở lại với nó một thời gian ... văn bản đã thay vì thực hiện trên cho thời điểm này mặc dù: ( –

0

Tôi khuyên bạn nên sử dụng công cụ lược tả chẳng hạn như ANTS để kiểm tra tốc độ của ứng dụng và tìm mã chậm. Điều này sẽ cho phép bạn thực hiện kiểm tra từng dòng thời gian thực thi.

0

Nếu bạn muốn đơn giản, chỉ cần đặt vòng lặp N-vòng lặp xung quanh và sử dụng StopWatch (hoặc chỉ là đồng hồ đeo tay) và chia cho N. Ví dụ: nếu bạn muốn micro giây, hãy N = 1000000. Nếu bạn lo lắng về chi phí của vòng lặp, chỉ cần đăng ký nó theo hệ số 10.

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