dotnet / dotnet/BenchmarkDotNet

Unsure how to assign Baseline when using Arguments

Open
#2,596 3 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.