為了找出系統中的效能問題,各個函數的執行時間是一個參考的依據,本文紀錄如何在 C# 中知道區段的執行時間。
Stopwatch class
Stopwatch class 是專門用來測量區間內所耗用的時間,它在 System.Diagnostics
namespace 中。
1 | ... |
上面的代碼建立了一個 Stopwatch 的實體,記得加上 using System.Diagnostics;
,或是在叫用時包含命名空間。
啟動與停止計時器
在想要計算的代碼前使用 Start
方法啟動,並在之後使用 Stop
方法停止計時器。
1 | Stopwatch stopWatch = new Stopwatch(); |
Stopwatch 也有提供單一指令初始化及啟動計時器的 StartNew
靜態方法,可以較為簡潔。
1 | Stopwatch stopWatch = Stopwatch.StartNew(); |
取得耗用時間
可以使用 ElapsedMilliseconds
屬性取得以毫秒為單位的耗用時間。
1 | Stopwatch stopWatch = Stopwatch.StartNew(); |
Stopwatch
還有提供格式為TimeSpan
的Elapsed
屬性,以及更精確的計時器刻度的ElapsedTicks
屬性。
重啟計時器
在開始計時器停止後如果叫用 Start
方法,計時器並不會被重製,時間會從原本的往上加:
1 | System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); |
1 | 1003 |
重啟計時器可以使用 Reset
方法。
1 | System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); |
1 | 1007 |
兩段一樣的代碼,執行時間不一定會相同,因此上面這個例子兩區段的時間是不會一樣的。
也可以使用單一指令 Restart
方法同時 Reset
及 Start
計時器:
1 | stopWatch.Restart(); |