A .NET library to make Benchmarking easy! See https://benchmarkdotnet.org/ and in-particular the Getting Started Guide the Main Features List
Add the NuGet package Install-Package BenchmarkDotNet
Run the following code:
public class Program
{
[Benchmark]
public void Slow() => Thread.Sleep(100);
[Benchmark]
public void Fast() => Thread.Sleep(25);
static void Main(string[] args)
{
Console.WriteLine("BenchmarkDotNet - Hello World!");
var summary = BenchmarkRunner.Run<Program>();
}
}
- Using '+' on
String
(i.e.myString += "blah"
) compared toStringBuilder
- Why is one faster that the other (Hint: see Diagnosers for some features that might help)
- Does the size of the
Strings
involved make a difference (Hint: check out Parameterisation)
- Replicate benchmarks from Performance Improvements in .NET Core 2.1
- Do you get the same results?
- Can you compare .NET Core with .NET Framework (Hint: see Configs and
Job.Core
)
- Find a blog post explaining a .NET Performance 'Best Practice' i.e. like "use StringBuilder rather than concatenating Strings" (from above). Prove or Disprove the advice
- Is it always true or does it depend on the version of .NET?
- Does it depend on 32-bit or 64-bit? (Hint: Disassmbler will help)
- Does the size of the inputs make a difference? (Hint: check out Parameterisation)
- Bonus points for any graphs (Hint: see Exporters - Plots