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