2016-07-06 46 views
-1

我想捕捉一個特定的代碼塊的執行時間的執行時間是有可能在C#中如何捕獲一個代碼塊調用的函數中使用C#

例子:

public class DoSomething 
{ 
    public void Long_Running_Call() 
    { 
      ..... 
    } 
    public void Medium_Running_Call() 
    { 
     ..... 
    } 
} 

在主要功能我想知道Long_Running_Call()Medium_Running_Call()的執行時間。

public static void main() 
{ 
    var do_something = New Do_Something(); 
    do_something.Long_Running_Call(); //I want to print the time taken for this function call below 
} 
+1

用秒錶來測量時間 – 2016-07-06 13:39:00

+0

我們還可以使用Environment.TickCount並創建一個返回的執行時間....公衆詮釋ExecutionTime(動作FUNC) {VAR 開始= Environment.TickCount的功能; func(); return Environment.TickCount - start; } ..... ExecutionTime(()=> do_something.Long_Running_Call())將返回執行所需的時間。 –

回答

0

您可以使用System.Diagnostics.Stopwatch

Stopwatch watch = new Stopwatch(); 
var do_something = new Do_Something(); 
watch.Start();       // Start the timer 
do_something.Long_Running_Call();  // Long running call 
watch.Stop();       // Stop the timer 
TimeSpan elapsed = watch.Elapsed; 

當然,這是假設Long_Running_Call同步和阻塞主線程。

+0

是的秒錶讓我更容易我用Environment.TickCount來捕獲時間並創建一個函數來做這樣的更改public int StartWatch(Action func) var start = Environment.TickCount; func(); return Environment.TickCount - start; } –

+0

@SaravananVelappan'Environment.TickCount'絕對是一個壞主意。由於'TickCount'屬性的類型爲'System.Int32',因此這些值將在'Int32.MinValue'和'Int32.MaxValue'之間循環。這意味着它將每隔25天在負值和正值之間循環。如果你在其中一個負值的日子開始你的程序,那麼你的邏輯「TickCount-start」將失敗。請參閱[docs](https://msdn.microsoft.com/en-us/library/system.environment.tickcount(v = vs.110).aspx) –

+0

上的重要**備註**部分我同意Environment.TickCount不是捕獲執行時間的有效方法 –

相關問題