是否有C#屬性(用於方法)來計算此方法的執行時間?有另一種方法嗎?是否可以使用屬性計算C#中方法的執行時間?
回答
如果您想編寫一些測試代碼來分析各種功能或其中的某些部分,您可以使用System.Diagnostics.Stopwatch來跟蹤經過的時間。就像這樣:
public void DoSomething(){
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//stuff you want to time
stopWatch.Stop();
System.Console.Writeln(String.Format("Total Ticks: {0}", stopWatch.ElapsedTicks))
}
如果這是你想要做一個更普遍的事情(即制定出什麼計劃的部分是緩慢的),然後使用一個分析器像一些其他的答案提出的。
您可以使用Timer
,在函數調用之前啓動它,然後在方法完成後停止它。然後以優選形式輸出時間!
OR
如果你不想寫手工代碼,請Visual Studio Profilers或SO - Best Profilers。
是的,最好的形式是修復你沒有使用合適的分析器的事實:_)** [見FAQ條目號。 5](http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers)** – sehe 2011-05-13 13:35:21
還有其他方法: 您可以使用VS Profiler來檢查particuler方法執行的次數和時間。
,或者你可以它使用屬性剖析性能第三方庫,請參閱本相關主題What Are Some Good .NET Profilers?
您可以使用面向方面編程來做到這一點。看看來自PostSharp的這個例子:http://www.sharpcrafters.com/solutions/performance
這裏的技巧是定義在編譯時注入代碼的行爲。一個用例是爲您需要的方法添加時間。
簡單的餡餅:
- 切勿
- Use a profiler
- 對於生產測量使用Performance Counters
事情是這樣的:
var oldTime = DateTime.Now;
//your code here
var resultTimeSpan = DateTime.Now - oldTime;
- 1. 是否可以計算沒有變量的方法執行時間?
- 2. 計算的方法的執行時間
- 3. 屬性是否總是在C#中的方法之前執行?
- 4. 是否可以使用計算的屬性來計算Vue中的另一個屬性?
- 5. 使用LOGPARSER的計算方法執行時間
- 6. 如何知道在C++中計算算法的執行時間?
- 7. 使用屬性阻止在設計時執行方法
- 8. 是否可以審計在頁面上執行的JavaScript方法?
- 9. 是否可以用Objective-C中的方法進行算術運算?
- 10. 計算的執行時間
- 11. 是否可以使用DOS回聲在單行中執行數學計算?
- 12. 使用C#中的PowerShell計算屬性
- 13. 是否可以在運行時修改屬性的屬性?
- 14. 阻止方法執行的C#屬性
- 15. 是否可以在PHP關聯數組中執行計算?
- 16. C++算法的執行時間
- 17. 是否可以使用ExpandoObject創建運行時屬性?
- 18. 計算執行時間
- 19. 計算CPU執行時間
- 20. 執行時間計算
- 21. vue.js是否更新依賴於方法的計算屬性?
- 22. 是否可以計算文件執行的次數?
- 23. 是否有可能返回App Engine計算屬性中的引用屬性?
- 24. 使用C++計算執行時間,而不是使用<time.h>
- 25. 以算術方式計算屬性
- 26. 是否可以使用宏來計算C樣式的`enum`值?
- 27. 是否可以在Windows窗體中使用Page.IsPostBack屬性? c#
- 28. 不同的方法計算時間執行
- 29. 螺栓執行()方法內的風暴計算時間
- 30. 理論上如何計算某種方法的執行時間?
這個問題是沒有意義的。屬性只在某些東西正在查找時才起作用,這意味着您需要一些代碼來檢查屬性,然後執行某些操作。另外'這個'是什麼? – Tejs 2011-05-13 13:25:02
僅當您使用基於屬性的代碼重寫器(如postsharp)時。 – CodesInChaos 2011-05-13 13:28:38
@Tejs這可能沒有意義,因爲OP可能會誤解屬性是什麼以及如何使用它們。在這種情況下,你糾正他,幫助他,而不是給他一個downvote。而「這一個」顯然是指該方法。 – Phil 2011-05-13 13:32:23