這邊只是用來我自己記錄跟分享有這個東西,防止我忘記。下面連結講得更清楚,可以參考
基本上只要準備一個 Console 並且安裝 Benchmark Dotnet 的 Nuget 套件
dotnet add package BenchmarkDotNet --version 0.13.12
並建立一個目標Class 比方說我現在是要比較 string.IsNullOrEmpty 與直接判斷字串,效能差異到底有多少。
public class IsEmptyVsEqual
{
[Benchmark()]
public void IsEmpty()
{
string sut = null;
var a= string.IsNullOrEmpty(sut);
sut = "";
var b = string.IsNullOrEmpty(sut);
sut = "aaaaaaaaaaaaasss";
var c = string.IsNullOrEmpty(sut);
}
[Benchmark()]
public void IsEqual()
{
string sut = null;
var a= sut == null || sut == "";
sut = "";
var b = sut == null || sut == "";
sut = "aaaaaaaaaaaaasss";
var c = sut == null || sut == "";
}
}
上面程式碼就是我要測試效率的兩個程式,分別針對null 、"跟有字串內容的狀態跑一次,並哪一種比較方式的效能比較好,這邊只要在 method 加上Attribute [Benchmark()]
然後回到Main 跑這一句程式碼
var summery = BenchmarkRunner.Run<IsEmptyVsEqual>();
然後執行就會開始比較囉~如下圖~
然後可以再 Class 上面加上 [MaxColumn] [MinColumn]就可以抓出測試中的最大值跟最小值,也有可以比較記憶體的 Attribute [MemoryDiagnoser()]
如有指正之處,歡迎隨時提出