Sample: IntroCategoryBaseline
The only way to have several baselines in the same class is to separate them by categories
and mark the class with [GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]
.
Source code
using System.Threading;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Configs;
namespace BenchmarkDotNet.Samples
{
[GroupBenchmarksBy(BenchmarkLogicalGroupRule.ByCategory)]
[CategoriesColumn]
public class IntroCategoryBaseline
{
[BenchmarkCategory("Fast"), Benchmark(Baseline = true)]
public void Time50() => Thread.Sleep(50);
[BenchmarkCategory("Fast"), Benchmark]
public void Time100() => Thread.Sleep(100);
[BenchmarkCategory("Slow"), Benchmark(Baseline = true)]
public void Time550() => Thread.Sleep(550);
[BenchmarkCategory("Slow"), Benchmark]
public void Time600() => Thread.Sleep(600);
}
}
Output
| Method | Categories | Mean | Error | StdDev | Ratio |
|-------- |----------- |----------:|----------:|----------:|------:|
| Time50 | Fast | 50.46 ms | 0.0745 ms | 0.0697 ms | 1.00 |
| Time100 | Fast | 100.47 ms | 0.0955 ms | 0.0893 ms | 1.99 |
| | | | | | |
| Time550 | Slow | 550.48 ms | 0.0525 ms | 0.0492 ms | 1.00 |
| Time600 | Slow | 600.45 ms | 0.0396 ms | 0.0331 ms | 1.09 |
Links
- Benchmark and Job Baselines
- The permanent link to this sample: BenchmarkDotNet.Samples.IntroCategoryBaseline