BenchmarkDotnetで.net6.0,.net7.0 バージョン毎に比較する方法

BenchmarkDotnetで、ベンチーマークを取る時、同じ機能を、異なるバージョンで実行したくなる場合があります。
プロジェクトの.netバージョンを変更して何度も実行することでも可能ですが、一度に並べて結果が出る方がうれしいです。
近いうち、.net8のベンチマークを取ろうと思うので、その前準備でもあります。
その方法のメモを以下に残します。

■ VisualStudio
VisualStudioInstallerで、対称となる.netバージョンをインストールしておく。
今回は、.net6.0 , .net7.0 が入っているようにします。

■ ソリューション・プロジェクト
・コンソールアプリケーションを作成
・.netバージョンは、対称の内、一番低いものを選択(今回は.net6.0)
・最上位のステートメントは使用しない
・Nugetパッケージ「BenchmarkDotNet」をインストール
・プロジェクトファイルの修正
 ・net7.0;net6.0を追加
 ・古いバージョンでサポートしていない構文を使う場合、LagnVersionを設定
  <LangVersion>latest</LangVersion>を追加

・以下サンプルコードの様に、Progarm.csを修正
(サンプルコード)

using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;

public class Program
{
    static void Main(string[] args)
    {
        BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args);
    }
}

public class CalcTest
{
    private bool _value = true;
    private char[] _chars = new char[] { 'T', 'r', 'u', 'e' };

    [Benchmark]
    public bool ParseTrue() => bool.TryParse(_chars, out _);
}

■ 実行
・コマンドプロンプトで実行
・プロジェクトのProgram.csファイルがあるフォルダまで移動して下記のコードを実行する
 dotnet run -c Release -f net6.0 –filter *CalcTest* –runtimes net6.0 net7.0

投稿日:
カテゴリー: C#

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です