dotnet / dotnet/BenchmarkDotNet
Unsure how to assign Baseline when using Arguments
- Dominant language
- C#
- Stars
- 11.5k
- Forks
- 1.1k
- Avg merge
- 6d 11h
- Merged PRs (30d)
- 12
Description
I've got the following setup for a benchmark fixture:
```cs
public class MyBenchmarks
{
[Params(1, 2, 3)]
public int SomeParameter { get; set; }
[Benchmark(Baseline = true)]
public void ScenarioA();
[Benchmark]
[Arguments(4)]
[Arguments(5)]
public void ScenarioB(int someArgument);
}
```
I was taken aback when the benchmarks spit out...
| Method | SomeParameter | someArgument | Ratio |
|-- |--:|--:|--:|
| ScenarioA | 1 | ? | 1.00 |
| | | | |
| ScenarioB | 1 | 4 | ? |
| | | | |
| ScenarioB | 1 | 5 | ? |
| | | | |
| ScenarioA | 2 | ? | 1.00 |
| | | | |
| ScenarioB | 2 | 4 | ? |
| | | | |
| ScenarioB | 2 | 5 | ? |
| | | | |
| ScenarioA | 3 | ? | 1.00 |
| | | | |
| ScenarioB | 3 | 4 | ? |
| | | | |
| ScenarioB | 3 | 5 | ? |
What I was going for, and had before I added `someArgument` was...
| Method | SomeParameter | someArgument | Ratio |
|-- |--:|--:|--:|
| ScenarioA | 1 | ? | 1.00 |
| ScenarioB | 1 | 4 | 0.50 |
| ScenarioB | 1 | 5 | 0.50 |
| | | | |
| ScenarioA | 2 | ? | 1.00 |
| ScenarioB | 2 | 4 | 0.50 |
| ScenarioB | 2 | 5 | 0.50 |
| | | | |
| ScenarioA | 3 | ? | 1.00 |
| ScenarioB | 3 | 4 | 0.50 |
| ScenarioB | 3 | 5 | 0.50 |
Makes sense, in retrospect, I suppose. I could achieve this by just splitting a `ScenarioC` method off of `ScenarioB`, and getting rid of `someParameter`. Is there a simpler way to get these to group up?
Contributor guide
Assessment
This issue has not been assessed yet.