Skip to content

Commit a7af815

Browse files
authored
introduce ManualConfig.CreateMinimumViable() method (#1582)
* add CreateMinimumViable method so users don't have to define logger and column provider every time * update docs
1 parent 5b21673 commit a7af815

File tree

4 files changed

+24
-11
lines changed

4 files changed

+24
-11
lines changed

docs/articles/configs/exporters.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,17 @@ The CSV exporter and other compatible exporters may consume an instance of `ISum
9999
Example of CSV exporter configured to always use microseconds, kilobytes, and to render units only in column headers:
100100

101101
```cs
102-
var config = ManualConfig.Create(DefaultConfig.Instance);
103-
config.Add(new CsvExporter(
102+
var exporter = new CsvExporter(
104103
CsvSeparator.CurrentCulture,
105-
new BenchmarkDotNet.Reports.SummaryStyle
106-
{
107-
PrintUnitsInHeader = true,
108-
PrintUnitsInContent = false,
109-
TimeUnit = BenchmarkDotNet.Horology.TimeUnit.Microsecond,
110-
SizeUnit = BenchmarkDotNet.Columns.SizeUnit.KB
111-
}));
104+
new SummaryStyle(
105+
cultureInfo: System.Globalization.CultureInfo.CurrentCulture,
106+
printUnitsInHeader: true,
107+
printUnitsInContent: false,
108+
timeUnit: Perfolizer.Horology.TimeUnit.Microsecond,
109+
sizeUnit: SizeUnit.KB
110+
));
111+
112+
var config = ManualConfig.CreateMinimumViable().AddExporter(exporter);
112113
```
113114

114115
Excerpt from the resulting CSV file:

samples/BenchmarkDotNet.Samples/IntroCustomMono.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public class IntroCustomMonoFluentConfig
7979
public static void Run()
8080
{
8181
BenchmarkRunner.Run<IntroCustomMonoFluentConfig>(ManualConfig
82-
.CreateEmpty()
82+
.CreateMinimumViable()
8383
.AddJob(Job.ShortRun.WithRuntime(new MonoRuntime(
8484
"Mono x64", @"C:\Program Files\Mono\bin\mono.exe")))
8585
.AddJob(Job.ShortRun.WithRuntime(new MonoRuntime(

src/BenchmarkDotNet/Configs/ManualConfig.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,20 @@ public void Add(IConfig config)
215215
Options |= config.Options;
216216
}
217217

218+
/// <summary>
219+
/// Creates a completely EMPTY config with no predefined settings.
220+
/// </summary>
221+
/// <remarks>You should most probably use the <see cref="CreateMinimumViable"></see> method instead.</remarks>
218222
public static ManualConfig CreateEmpty() => new ManualConfig();
219223

224+
/// <summary>
225+
/// Creates a minimum viable config with predefined columns provider and console logger.
226+
/// </summary>
227+
public static ManualConfig CreateMinimumViable()
228+
=> CreateEmpty()
229+
.AddColumnProvider(DefaultColumnProviders.Instance)
230+
.AddLogger(ConsoleLogger.Default);
231+
220232
public static ManualConfig Create(IConfig config)
221233
{
222234
var manualConfig = new ManualConfig();

src/BenchmarkDotNet/Reports/SummaryStyle.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class SummaryStyle : IEquatable<SummaryStyle>
2222
public TimeUnit TimeUnit { get; }
2323
[NotNull]
2424
public CultureInfo CultureInfo { get; }
25-
25+
2626
public RatioStyle RatioStyle { get; }
2727

2828
public SummaryStyle([CanBeNull] CultureInfo cultureInfo, bool printUnitsInHeader, SizeUnit sizeUnit, TimeUnit timeUnit, bool printUnitsInContent = true,

0 commit comments

Comments
 (0)