還在徒手揮汗寫For測效能,閃開讓BenchmarkDotNet來
上集使用反射執行方法的7種方式我們談到寫法不同,效果不同這件事,也說到,通常我們測試程式效能會很習慣的採用 Stopwatch 模式(Stopwatch Pattern)來進行程式執行效率的比較。
Stopwatch sw = new Stopwatch(); sw.Start(); // stuff sw.Stop();
我們把前面的 7 Ways 程式碼用 for 跑 20000 次計算時間,可以得到以下結果:
Way1 Time: 40 ms Way2 Time: 40 ms Way3 Time: 76 ms Way4 Time: 67 ms Way5 Time: 148 ms Way6 Time: 4233 ms Way7 Time: 2054 ms
但這樣對嗎?在談效率時,其實有二種意義:時間或空間(文言文:時間複雜度、空間複雜度),我不是來教書的,雖然 Stopwatch 寫起來不複雜,但僅能看到時間單一面向,好像只要快就是好,怪怪的。
那有無更好的選擇?