介紹如何使用 Stopwatch 類別來追蹤執行時間,以及使用時的小技巧
我們常常會需要去追蹤一段code執行所花費的時間,
一般的做法會像這樣
一般的做法會像這樣
////示範一
DateTime dtstart = DateTime.Now;
//// code
System.Threading.Thread.Sleep(100);
TimeSpan ts = DateTime.Now - dtstart;
Response.Write(ts.TotalSeconds.ToString());
這邊分享另一個類別 【Stopwatch】
////示範二
System.Diagnostics.Stopwatch sw =
new
System.Diagnostics.Stopwatch();
sw.Start();
//// code
System.Threading.Thread.Sleep(100);
sw.Stop();
Response.Write(sw.Elapsed.TotalSeconds.ToString());
一樣可以達到相同效果。
那兩者的差異在哪呢,
【Stopwatch】提供較高精確度的計量,
如果硬體和OS支援高解析度效能計數器,Stopwatch 類別會使用該計數器來測量已耗用時間。
不然,Stopwatch 類別會使用系統計時器來測量已耗用時間,
並且可重複呼叫Start及Stop方法,來累積更多執行區間所耗用時間,
然後利用【Elapsed】屬性取得累積耗用時間。
【Stopwatch】提供較高精確度的計量,
如果硬體和OS支援高解析度效能計數器,Stopwatch 類別會使用該計數器來測量已耗用時間。
不然,Stopwatch 類別會使用系統計時器來測量已耗用時間,
並且可重複呼叫Start及Stop方法,來累積更多執行區間所耗用時間,
然後利用【Elapsed】屬性取得累積耗用時間。
再分享一下,
為了方便在線上環境追蹤執行狀況,有時可以利用 #if DEBUG 搭配 Stopwatch,埋一些追蹤的code,
只要將 web.config 的 debug mode 設定為 true,就可以輸出執行時間,
在將 debug mode 設定為 false,就可以隱藏執行時間,類似作法如下
為了方便在線上環境追蹤執行狀況,有時可以利用 #if DEBUG 搭配 Stopwatch,埋一些追蹤的code,
只要將 web.config 的 debug mode 設定為 true,就可以輸出執行時間,
在將 debug mode 設定為 false,就可以隱藏執行時間,類似作法如下
////示範三 #if DEBUG 搭配 Stopwatch
#if DEBUG
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();
#endif
//// code
System.Threading.Thread.Sleep(100);
#if DEBUG
sw.Stop();
Response.Write(sw.Elapsed.TotalSeconds.ToString());
#endif
此範例是將時間直接輸出,
各位可以修改將時間輸出到檔案或是別的地方。
各位可以修改將時間輸出到檔案或是別的地方。
程式碼工作室 吳 Sir
Skype: wu_chung_pin
Line: paulwu0114
亞太:0977387198
電話:03-5509853
傳真:03-5509853
沒有留言:
張貼留言