2011-05-13 30 views
4

是否有C#屬性(用於方法)來計算此方法的執行時間?有另一種方法嗎?是否可以使用屬性計算C#中方法的執行時間?

+0

這個問題是沒有意義的。屬性只在某些東西正在查找時才起作用,這意味着您需要一些代碼來檢查屬性,然後執行某些操作。另外'這個'是什麼? – Tejs 2011-05-13 13:25:02

+1

僅當您使用基於屬性的代碼重寫器(如postsharp)時。 – CodesInChaos 2011-05-13 13:28:38

+2

@Tejs這可能沒有意義,因爲OP可能會誤解屬性是什麼以及如何使用它們。在這種情況下,你糾正他,幫助他,而不是給他一個downvote。而「這一個」顯然是指該方法。 – Phil 2011-05-13 13:32:23

回答

2

如果您想編寫一些測試代碼來分析各種功能或其中的某些部分,您可以使用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)) 
} 

如果這是你想要做一個更普遍的事情(即制定出什麼計劃的部分是緩慢的),然後使用一個分析器像一些其他的答案提出的。

3

您可以使用Timer,在函數調用之前啓動它,然後在方法完成後停止它。然後以優選形式輸出時間!

OR

如果你不想寫手工代碼,請Visual Studio ProfilersSO - Best Profilers

+0

是的,最好的形式是修復你沒有使用合適的分析器的事實:_)** [見FAQ條目號。 5](http://stackoverflow.com/questions/3927/what-are-some-good-net-profilers)** – sehe 2011-05-13 13:35:21

4

還有其他方法: 您可以使用VS Profiler來檢查particuler方法執行的次數和時間。

,或者你可以它使用屬性剖析性能第三方庫,請參閱本相關主題What Are Some Good .NET Profilers?

5

您可以使用面向方面編程來做到這一點。看看來自PostSharp的這個例子:http://www.sharpcrafters.com/solutions/performance

這裏的技巧是定義在編譯時注入代碼的行爲。一個用例是爲您需要的方法添加時間。

0

事情是這樣的:

var oldTime = DateTime.Now; 
    //your code here 
    var resultTimeSpan = DateTime.Now - oldTime; 
相關問題