You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(I'm using BenchmarkDotNet v0.14. The issue occurs on Windows, I haven't tested it on Linux or Mac OS.)
I have a Program.cs inside a benchmark project that looks like this:
publicstaticclassProgram{publicstaticvoidMain(string[]args){varconfig=GetConfig();BenchmarkSwitcher.FromAssembly(Assembly.GetExecutingAssembly()).Run(args,config);}privatestaticManualConfigGetConfig(){varjob=Job.Default;varconfig=ManualConfig.Create(DefaultConfig.Instance).AddJob(job.WithToolchain(CsProjCoreToolchain.NetCoreApp80).AsBaseline(),Job.Default.WithRuntime(NativeAotRuntime.Net80),job.WithToolchain(CsProjCoreToolchain.NetCoreApp60)).AddDiagnoser(MemoryDiagnoser.Default);if(Environment.OSVersion.Platform==PlatformID.Win32NT){config.AddJob(job.WithToolchain(CsProjClassicNetToolchain.Net481));}config.SummaryStyle=SummaryStyle.Default.WithRatioStyle(RatioStyle.Percentage);config.AddValidator(JitOptimizationsValidator.FailOnError);// Fail when any of the referenced assemblies are not optimizedconfig.WithOrderer(newDefaultOrderer(SummaryOrderPolicy.FastestToSlowest));returnconfig;}}
So I'm running benchmarks against .NET 8 as my baseline, .NET 8 with Native AOT, .NET 6 and .NET 4.8.1 when on Windows. When running this using dotnet build -c Release && dotnet run -c Release -f net8.0 the final report in the console shows this:
In the first part of the summary, where the jobs are listed, it correctly identifies the runtimes used. However, in the overview of the metrics per benchmark/runtime combination, it gets confused about it and only lists .NET 8.0 or NativeAOT 8.0 and not .NET 6 and .NET 4.8.1. The metrics are okay though, so it looks like just a display issue for the runtime names.
⚠️ Removing the AOT job (Job.Default.WithRuntime(NativeAotRuntime.Net80)) solves this issue so it seems to be related to having Native AOT benchmarks mixed with 'normal' ones.
For reproduction the code I ran is on Github: akamsteeg/AtleX.HaveIBeenPwned@c6c6cd4. Running it with dotnet build -c Release && dotnet run -c Release -f net8.0 and picking any benchmark should reproduce this. It's consistent for me on two Windows 11 machines.
The text was updated successfully, but these errors were encountered:
(I'm using BenchmarkDotNet v0.14. The issue occurs on Windows, I haven't tested it on Linux or Mac OS.)
I have a
Program.cs
inside a benchmark project that looks like this:So I'm running benchmarks against .NET 8 as my baseline, .NET 8 with Native AOT, .NET 6 and .NET 4.8.1 when on Windows. When running this using
dotnet build -c Release && dotnet run -c Release -f net8.0
the final report in the console shows this:In the first part of the summary, where the jobs are listed, it correctly identifies the runtimes used. However, in the overview of the metrics per benchmark/runtime combination, it gets confused about it and only lists .NET 8.0 or NativeAOT 8.0 and not .NET 6 and .NET 4.8.1. The metrics are okay though, so it looks like just a display issue for the runtime names.
Job.Default.WithRuntime(NativeAotRuntime.Net80)
) solves this issue so it seems to be related to having Native AOT benchmarks mixed with 'normal' ones.For reproduction the code I ran is on Github: akamsteeg/AtleX.HaveIBeenPwned@c6c6cd4. Running it with
dotnet build -c Release && dotnet run -c Release -f net8.0
and picking any benchmark should reproduce this. It's consistent for me on two Windows 11 machines.The text was updated successfully, but these errors were encountered: