[ C# 開發隨筆 ] 效能比較的好用套件 Benchmark Dotnet

這邊只是用來我自己記錄跟分享有這個東西,防止我忘記。下面連結講得更清楚,可以參考

傳送門:https://igouist.github.io/post/2021/06/benchmarkdotnet/

基本上只要準備一個 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()]
 

如有指正之處,歡迎隨時提出