Skip to content

Commit db4d8b6

Browse files
authored
Adds Metrics Columns to Benchmark Report Output (#2458)
* Adds Metrics Columns to Benchmark Report for XmlExporter, and adds columns for output based on Hardware Counters when using ManualConfig. Fix #2233 * Removed changes to ManualConfig that were not needed and introduced in a past commit of this PR.
1 parent bb55e6b commit db4d8b6

File tree

5 files changed

+1109
-292
lines changed

5 files changed

+1109
-292
lines changed

src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs

+1
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ internal class BenchmarkReportDto
7171
public string MethodTitle => report.BenchmarkCase.Descriptor.WorkloadMethodDisplayInfo;
7272
public string Parameters => report.BenchmarkCase.Parameters.PrintInfo;
7373
public Statistics Statistics => report.ResultStatistics;
74+
public IEnumerable<Metric> Metrics => report.Metrics.Values;
7475
public GcStats Memory => new GcStats()
7576
{
7677
Gen0Collections = report.GcStats.Gen0Collections,

tests/BenchmarkDotNet.Tests/Exporters/CommonExporterVerifyTests.cs

+13-1
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
using System.Threading.Tasks;
66
using BenchmarkDotNet.Columns;
77
using BenchmarkDotNet.Configs;
8+
using BenchmarkDotNet.Diagnosers;
89
using BenchmarkDotNet.Exporters;
910
using BenchmarkDotNet.Exporters.Json;
1011
using BenchmarkDotNet.Exporters.Xml;
1112
using BenchmarkDotNet.Loggers;
13+
using BenchmarkDotNet.Reports;
1214
using BenchmarkDotNet.Tests.Builders;
1315
using BenchmarkDotNet.Tests.Mocks;
16+
using BenchmarkDotNet.Tests.Reports;
1417
using JetBrains.Annotations;
1518
using VerifyXunit;
1619
using Xunit;
@@ -51,7 +54,14 @@ public Task Exporters(string cultureInfoName)
5154
foreach (var exporter in exporters)
5255
{
5356
PrintTitle(logger, exporter);
54-
exporter.ExportToLog(MockFactory.CreateSummary(config.WithCultureInfo(cultureInfo)), logger);
57+
exporter.ExportToLog(
58+
MockFactory.CreateSummary(
59+
config.WithCultureInfo(cultureInfo),
60+
hugeSd: false,
61+
new[]
62+
{
63+
new Metric(new FakeMetricDescriptor("CacheMisses", "Hardware counter 'CacheMisses' per single operation", "N0"), 7)
64+
}), logger);
5565
}
5666

5767
var settings = VerifySettingsFactory.Create();
@@ -98,6 +108,8 @@ private static IEnumerable<IExporter> GetExporters()
98108
.AddColumn(StatisticColumn.Mean)
99109
.AddColumn(StatisticColumn.StdDev)
100110
.AddColumn(StatisticColumn.P67)
111+
.AddHardwareCounters(HardwareCounter.CacheMisses)
112+
.AddColumnProvider(DefaultColumnProviders.Metrics)
101113
.AddDiagnoser(Diagnosers.MemoryDiagnoser.Default);
102114

103115
public void Dispose()

0 commit comments

Comments
 (0)