Làm cách nào để biết thời gian chạy mã C# của tôi?Mã của tôi mất bao lâu để chạy?
Trả lời
Kiểm tra các lớp Stopwatch
:
Stopwatch sw = new Stopwatch();
sw.Start();
// your code here
sw.Stop();
TimeSpan elapsedTime = sw.Elapsed;
Khám phá lớp học Stopwatch.
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.
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.
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.
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.
- 1. Mất bao lâu để học C?
- 2. Glibc mất bao lâu để biên dịch?
- 3. JS: Mất bao lâu để gọi một hàm?
- 4. Mã kéo dài bao lâu?
- 5. Chạy "tuyến đường cào" trong bao lâu?
- 6. Mất bao lâu SHA-1 để tạo băm?
- 7. Mất bao lâu để hình ảnh bị lỗi -?
- 8. Mất bao lâu để một tập lệnh thực thi?
- 9. jsFiddle lưu trữ mã của bạn trong bao lâu?
- 10. Biên soạn mẫu có thể mất bao lâu?
- 11. Mã thông báo "nhớ tôi" phải là bao lâu?
- 12. Mất bao lâu một tập tin thực thi?
- 13. Mất bao lâu mỗi chuỗi thời gian trong Windows XP?
- 14. Mất bao lâu để tin nhắn từ Google Cloud Messaging đến trên thiết bị
- 15. Làm mới Eclipse mất quá lâu
- 16. Mất bao lâu để số lượt cài đặt trên thị trường Android cập nhật?
- 17. Ứng dụng ASP.NET MVC sẽ chạy trong bao lâu
- 18. Mất bao lâu để các thay đổi .htaccess có hiệu lực?
- 19. Mất bao lâu để đăng ký chương trình nhà phát triển iPhone?
- 20. Mất bao lâu để đăng ký làm nhà phát triển Google Play?
- 21. Mất bao lâu để lưu trữ bản ghi lưu lượng truy cập máy chủ web?
- 22. Tìm hiểu xem yêu cầu Ajax mất bao lâu để hoàn thành
- 23. Mất bao lâu để tạo 1 triệu chủ đề trong Haskell?
- 24. Mã thông báo APNS có hiệu lực trong bao lâu?
- 25. Chuỗi java của tôi mất bao nhiêu bộ nhớ?
- 26. Cách kiểm tra xem truy vấn MySQL đang mất bao lâu?
- 27. Các hành động của Biểu đồ mở mất bao lâu để được chấp thuận từ 'đang chờ xử lý'?
- 28. Tôi nên tạo EntityManager bao lâu một lần?
- 29. Tôi mất bao nhiêu tiền để chọn ASP.NET trên PHP?
- 30. Biến tĩnh PHP kéo dài bao lâu?
Cảm ơn cá nhân về MiniBench, Jon - nó đã trở thành công cụ vô giá đối với tôi. –
@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ù: ( –