một số phần của chương trình của tôi rất chậm. và tôi đã tự hỏi nếu có công cụ mà tôi có thể sử dụng và ví dụ nó có thể cho tôi biết ok chạy methodA() mất 100ms, vv ... hoặc thông tin hữu ích như vậy tương tự như vậy.Bất kỳ công cụ nào cho biết mỗi phương thức chạy bao lâu?
Trả lời
Không gian tên System.Diagnostics cung cấp lớp hữu ích được gọi là Stopwatch, có thể được sử dụng để tính thời gian các phần của mã của bạn (coi đó là "hồ sơ người nghèo").
Đây là cách bạn sẽ sử dụng nó:
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start(); // Start timing
// This is what we want to time
DoSomethingWeSuspectIsSlow();
stopwatch.Stop();
Console.WriteLine("It took {0} ms.", stopwatch.ElapsedMilliseconds);
hoặc, tạo một lớp thực hiện idisposable, khởi động bộ đếm thời gian trên hệ thống, dừng lại và ghi trên vứt bỏ. Sau đó, bạn có thể thời gian bất kỳ khối mã bằng cách gói nó với một tuyên bố sử dụng! –
Cũng đảm bảo rằng phương thức đã được gọi ít nhất một lần trước khi định thời gian, để bạn không đo thời gian cho việc biên dịch JIT. –
@ John Gardner - cấu trúc của bạn cũng rất hữu ích để có được thời gian hoàn thiện từ một hệ thống Prod đang chạy. Tích lũy thời gian cho các phần của workitem với một thẻ xác định chúng, và đổ vào cuối của workitem. –
Những loại ứng dụng được gọi là "profilers"
Dưới đây là một ví dụ: example
Nếu bạn đang sử dụng Visual Studio Team System có một hồ sơ được xây dựng trong trong 'Performance Tools'. Có một tấn nền hữu ích về điều này tại this blog.
Tôi thấy điều này cực kỳ hữu ích trong việc xác định 20% of my code that runs 80% of the time và do đó tôi nên lo lắng về việc tối ưu hóa. Một kỹ thuật đơn giản khác có thể hiệu quả đáng ngạc nhiên là chạy mã phát hành của bạn trong trình gỡ rối và ngắt nó một vài lần (10 hoặc hơn), trong khi đang ở trạng thái 'bận' mà bạn đang cố gắng chẩn đoán . Bạn có thể tìm thấy thông tin callstack định kỳ hướng bạn đến khu vực chung của mối quan tâm. Một lần nữa, quy tắc 80/20 có hiệu lực.
+1 Tôi đã sử dụng phương thức ngắt đó kể từ trước khi profilers được hình thành. Tôi đã rất băn khoăn rằng rất ít người biết điều đó. Tôi sẽ nói nó thực sự xác định khu vực quan tâm, và quy tắc 80/20 giống như 99.9/0.1 –
Đáng buồn thay, liên kết 80/20 đặc biệt trống rỗng. –
@Mike Dunlavey - bạn có tốt hơn không? Tôi sẽ chỉnh sửa nếu có. Cảm ơn –
Xem SD C# Profiler của chúng tôi. Nó có thể cung cấp chức năng timings của chức năng của chính nó và/hoặc tất cả các callees của nó.
- 1. Biểu thức phím tắt AOP cho bất kỳ phương thức công khai nào của dịch vụ
- 2. Gọi phương thức mỗi lần trước khi bất kỳ phương pháp nào khác được gọi là
- 3. bất kỳ công cụ tốt nào cho thế hệ makefile?
- 4. Gọi bất kỳ phương thức Java nào từ C#
- 5. Bạn có biết bất kỳ công cụ phát hiện trực quan SQLite nào không?
- 6. Có bất kỳ công cụ DRYer mã nào không?
- 7. Bất kỳ bộ công cụ web C/C++ nào tốt?
- 8. Có bất kỳ công cụ nào tương tự như intellitrace
- 9. Có bất kỳ công cụ gỡ rối đồng thời nào cho C# .NET trong VS2010
- 10. Có bất kỳ công cụ XSL Lint nào không?
- 11. có bao nhiêu lớp học cho mỗi gói? phương pháp cho mỗi lớp học? dòng cho mỗi phương pháp?
- 12. Tại sao không có bất kỳ Công thức PHP "chính thức" nào cho Homebrew
- 13. Bất kỳ thực tiễn hay công cụ nào tốt nhất cho kho lưu trữ Ivy?
- 14. Chạy "tuyến đường cào" trong bao lâu?
- 15. Mất bao lâu mỗi chuỗi thời gian trong Windows XP?
- 16. Bất kỳ công cụ định dạng dòng lệnh nào có sẵn cho tệp java?
- 17. MSTest có thể chạy một phương thức cụ thể mỗi lần khởi động không?
- 18. Bất kỳ công cụ trực quan nào cho các không gian chính của Cassandra?
- 19. Bất kỳ ai biết về bất kỳ mẫu T4 nào để tạo các lớp từ xsd?
- 20. nhiều phương thức cho mỗi nhân viên của sidekiq
- 21. Java hoặc bất kỳ ngôn ngữ nào khác: Phương thức/lớp nào đã gọi cho tôi?
- 22. Chạy phương thức chỉ một lần ngay từ đầu trước khi bất kỳ thử nghiệm nào được chạy trong PyUnit
- 23. Số liệu hiệu suất về các thói quen cụ thể: bất kỳ phương pháp hay nhất nào?
- 24. Ứng dụng ASP.NET MVC sẽ chạy trong bao lâu
- 25. biểu thức cron cho mỗi> công việc 60 phút
- 26. web.py: Cách chọn lọc ẩn tài nguyên với 404 cho bất kỳ phương thức HTTP nào?
- 27. Bất kỳ công cụ nào để tạo mã JavaScript từ AST
- 28. Bất kỳ khung công tác NIO nào cho .NET?
- 29. Có bất kỳ tập lệnh/công cụ JAVADOCS tương tự nào cho các tệp Javascript không?
- 30. Bất kỳ công cụ phân biệt/hợp nhất văn bản nào cho .NET?
Nó được gọi là [Profiler] (http://stackoverflow.com/search?q= [c% 23] + profiler). – dtb
Những gì bạn đang tìm kiếm được gọi là profiler. – GrandmasterB
bản sao có thể có của [Một số Profilers .NET tốt?] (Http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers) – dtb