在 RoslynPad 中使用 MeasureIt 做基準測試 (benchmarking)

BenchmarkDotNet 是一個很熱門的工具可以用來簡單的量測與比較程式碼的效能,但是有時候我們只是想要快速測試一段程式碼的執行時間,這時候還要開 IDE 使用 BenchmarkDotNet 就覺得有點厚重 (除非 BenchmarkDotNet 專案已經建好在方案中可以一邊開發一邊實驗)。

這時候就想要在 RoslynPad 或 LinqPad 中使用基準測試工具,偏偏因為 RoslynPad 的限制而無法支援 BenchmarkDotNet,所以只能另外找一個替代方案 - MeasureIt。

使用方式

範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#r "nuget:MeasureIt.exe/0.2.2"

using PerformanceMeasurement;

var cost = LinqPadUX.Measure.Action(new Action(() =>
{
string s = string.Empty;
for (var i = 0; i < 1000; i++)
{
s += i.ToString();
}
})).Dump();

var costComparison = LinqPadUX.Measure.NamedActions(new List<NamedAction>()
{
new NamedAction("string", () =>
{
string s = string.Empty;
for (var i = 0; i < 1000; i++)
{
s += i.ToString();
}
}),
new NamedAction("stringBuilder", () =>
{
var sb = new StringBuilder();
for (var i = 0; i < 1000; i++)
{
sb.Append(i.ToString());
}
var s = sb.ToString();
})
}).Dump();

結論

沒什麼難度,但是沒記一下的話很快就忘了,尤其這個替代方案不算熱門,沒有很好找。

這個工具的功能比較精簡,如果真的要複雜的分析還是 BenchmarkDotNet 比較豐富。

參考

Support BenchmarkDotNet

Run time costs of small operations in C#