我的程序的某些部分速度很慢。我想知道是否有我可以使用的工具,例如它可以告訴我確定運行methodA()花了100毫秒,等等...或類似的有用信息。任何說明每種方法運行需要多長時間的工具?
回答
System.Diagnostics命名空間提供了一個名爲Stopwatch一個有用的類,它可用於代碼的時間部分(認爲它是一個「窮人的仿形」)。
這是你將如何使用它:
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);
或者,創建一個實現idisposable的類,它在構造時啓動定時器,在處置時停止和寫入。然後你可以通過用using語句包裝它來計時任何代碼塊! – 2010-09-22 21:02:34
還要確保在計時之前至少調用了該方法一次,以便您不測量JIT編譯的時間。 – 2010-09-22 21:05:06
@John Gardner - 你的構造對於從正在運行的Prod系統中獲得執行時間也非常有用。使用標識它們的標籤累積工作項目部分的時間,並在工作項目結尾處傾倒。 – 2010-09-22 21:05:13
這些類型的應用被稱爲「探查」
這裏有一個例子:example
如果您使用Visual Studio Team System中存在「性能工具」一個內置的分析器。這裏有很多有用的背景,this blog。
我發現這在識別20% of my code that runs 80% of the time時非常有用,因此我應該擔心優化。
另一個令人驚訝的有效的簡單技術是在調試器中運行你的發佈代碼,並且在你正試圖診斷的「繁忙」狀態下中斷它幾次(大約10次就足夠了) 。您可能會發現經常性的調用堆棧信息,這些信息會將您引導至常見的關注區域。 80/20規則也是有效的。
+1我一直在使用該中斷方法因爲在配置文件被構思之前。我很困惑,很少有人知道它。我想說它實際上確定了所關注的領域,而80/20規則更像99.9/0.1 – 2010-09-23 01:58:02
不幸的是,80/20鏈接是特別真實的。 – 2010-09-23 12:38:05
@Mike Dunlavey--你有更好的嗎?如果是的話,我會編輯。謝謝 – 2010-09-23 13:00:52
見我們SD C# Profiler。它可以自己和/或其所有被調用者提供該功能的功能定時。
- 1. 預測方法運行需要多長時間java
- 2. 運行scipy.test('full')需要多長時間?
- 3. 吞噬任務需要多長時間?
- 4. 方法需要明確的`self`說法
- 5. 查找我的方法需要多長時間執行
- 6. 分析C#中的方法知道需要多長時間運行
- 7. TopicClient需要多長時間?
- 8. GC需要多長時間?
- 9. NSCalendarUnitEra需要多長時間?
- 10. 執行腳本需要多長時間?
- 11. CreateThread需要執行多長時間?
- 12. 插入150K行需要多長時間?
- 13. 執行循環需要多長時間?
- 14. 需要說明swing方法paint()如何工作?
- 15. Firebase getCurrentUser方法需要說明
- 16. Java-Selenium2:需要方法說明
- 17. 我的命令運行需要多長時間
- 18. Facebook SDK 2.0要運行多長時間
- 19. tablediff工具需要很長時間才能執行
- 20. 時間需要多長時間
- 21. 這需要多長時間才能運行,我該如何加速運行
- 22. 每種方法應該運行多少種測試方法?
- 23. 如何找出我的任務需要多長時間
- 24. 如何查找我的耙子任務需要多長時間
- 25. 如何讓長時間運行的@Scheduled spring方法,hibernate工作?
- 26. 什麼是顯示命令行操作需要多長時間的最佳方法或工具?
- 27. 是否可以預測程序運行需要多長時間?
- 28. 使用RxJava(ReactiveX)運行Observable需要多長時間?
- 29. 顯示查詢需要在SQL Server中運行多長時間
- 30. 在asp.net中運行web服務需要多長時間
它被稱爲[Profiler](http://stackoverflow.com/search?q= [c%23] + profiler)。 – dtb 2010-09-22 20:46:42
你在找什麼叫做分析器。 – GrandmasterB 2010-09-22 20:46:50
可能的重複[什麼是一些好的.NET分析器?](http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers) – dtb 2010-09-22 20:47:05