Skip to content

Instantly share code, notes, and snippets.

@linkdotnet
Last active July 14, 2021 12:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save linkdotnet/df97d977319e281619c26563a1329c5a to your computer and use it in GitHub Desktop.
Save linkdotnet/df97d977319e281619c26563a1329c5a to your computer and use it in GitHub Desktop.
Benchmark string concat different approaches
using System;
using System.Text;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
namespace StringBuilderTest
{
class Program
{
static void Main(string[] args)
{
BenchmarkRunner.Run<StringBuilderBenchmark>();
}
}
public class StringBuilderBenchmark
{
[Params(2, 10, 50, 100)] public int ConcatSize { get; set; }
[Benchmark]
public string ConcatViaStringBuilder()
{
var sb = new StringBuilder();
for (var i = 0; i < ConcatSize; i++)
{
sb.Append(i);
}
return sb.ToString();
}
[Benchmark]
public string ConcatViaConcatBoxed()
{
var output = string.Empty;
for (var i = 0; i < ConcatSize; i++)
{
output += output + i;
}
return output;
}
[Benchmark]
public string ConcatViaConcatUnboxed()
{
var output = string.Empty;
for (var i = 0; i < ConcatSize; i++)
{
output += output + i.ToString();
}
return output;
}
[Benchmark]
public string ConcatViaStringFormatBoxed()
{
var output = string.Empty;
for (var i = 0; i < ConcatSize; i++)
{
output = $"{output}{i}";
}
return output;
}
[Benchmark]
public string ConcatViaStringFormatUnboxed()
{
var output = string.Empty;
for (var i = 0; i < ConcatSize; i++)
{
output = $"{output}{i.ToString()}";
}
return output;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment