自製ActionFilter小鋼炮:MVC/WebAPI程式效能計時器
最近進行一些ASP.NET MVC/ASP.NET Web API系統效能改善的工作,改善之初當然是找出最耗效能(或是說較耗效能)的程式碼來下手改善。找出吃資源程式碼的方式很多,第三方有許多不錯的選擇,不過我需求真的很簡單,只想得到一個數字,在 .NET Framework 最簡單是用的System.Diagnostics.Stopwatch 類別進行耗用時間的測量。
單一程式段落效能計時器
我們先從最簡單的開始,計算一段程式碼的執行時間。
ASP.NET MVC - Action段落效能計時器
public ActionResult InActionTimer() { System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); // 模擬程式執行 System.Threading.Thread.Sleep(1527); stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; System.Diagnostics.Debug.WriteLine($"ActionTimer: {ts.ToString()} from Foo/InActionTimer"); return Content($"ActionTimer: {ts.ToString()} from Foo/InActionTimer"); }
可以看到.Start()
與.Stop()
之間的程碼計算出耗費時間。