ベンチマークプロジェクトのテンプレートを基にして、簡単なベンチマークを作成してみます。
大文字アルファベットA~Zの26文字を、1文字ずつ連結させて、26文字の文字列にする処理を、StringBuilderを使った方法と str += '' を使った方法とで、処理速度とメモリ割当量を比較計測してみます。

using System;
using System.Linq;
using System.Text;
using BenchmarkDotNet.Attributes;
using Microsoft.VSDiagnostics;
namespace StringBuilderBenchmark;
[CPUUsageDiagnoser]
[DotNetCountersDiagnoser]
[MemoryDiagnoser]
[RPlotExporter]
public class Benchmarks
{
private static ReadOnlySpan<char> alphabets
=> Enumerable.Range(0x41, 26)
.Select(x => (char)x)
.ToArray();
[Benchmark]
public string StringBuilderAppend()
{
var sb = new StringBuilder(capacity: 26);
foreach (var c in alphabets)
{
sb.Append(c);
}
return sb.ToString();
}
[Benchmark]
public string StringAdd()
{
var str = string.Empty;
foreach (var c in alphabets)
{
str += c;
}
return str;
}
}
BenchamrkDotNet では、Debug ビルドではなく Release ビルドにして、デバッグ実行を開始します。

./bin/Release/ランタイム/プロジェクト名.Artifacrs/results/ 内に、ベンチマーク計測結果が出力されます。


Visual Stuido 側で、診断ツール内で各種カウンタやCPU使用率の分析ができます。



GitHub Copilot を使って、プロファイリング(分析と最適化)をリクエストすることができます。


