2008年6月17日 星期二

C#計算程式執行時間

在寫程式的時候我們常常需要測量程式執行時間 .NET本身有提供所謂的效能計數器 精度非常高 但是使用上比較繁瑣 如果我們需要簡單的測量時間就好 對幾一千分之一秒的時間誤差沒有很刻求 那以下有兩種常用的方法可以簡單的計算目標程式所花費的執行時間

範例:

//方法一

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();//引用stopwatch物件

sw.Reset();//碼表歸零

sw.Start();//碼表開始計時

/**************/

/**************/

/***目標程式***/

/**************/

/**************/

sw.Stop();//碼錶停止

//印出所花費的總豪秒數

string result1 = sw.Elapsed.TotalMilliseconds.ToString();



//方法二

DateTime time_start = DateTime.Now;//計時開始 取得目前時間

/**************/

/**************/

/***目標程式***/

/**************/

/**************/

System.Threading.Thread.Sleep(1000);

DateTime time_end = DateTime.Now;//計時結束 取得目前時間

//後面的時間減前面的時間後 轉型成TimeSpan即可印出時間差

string result2 = ((TimeSpan)(time_end - time_start)).TotalMilliseconds.ToString();



注意:兩種方法最後都會得到一個timespan類別的變數 代表時間的差距 顯示的時候要使用.TotalMilliseconds才是"總毫秒" 如果是使用Milliseconds 則只有"毫秒"的部份 例如執行時間是1秒又357毫秒 TotalMilliseconds會得到總供是1357毫秒 而Milliseconds只會得到其中357毫秒的部份 如果有需要把時間間隔轉成進位制 才需要使用到Milliseconds (2小時50分12秒又190毫秒)