From 216e38ef538f4a7358011b5f8f232a23b91ea71a Mon Sep 17 00:00:00 2001 From: Andrey Akinshin Date: Tue, 27 Aug 2024 02:00:42 +0200 Subject: [PATCH] [WIP] Introduce Phd --- BenchmarkDotNet.sln | 14 + .../HardwareCounters.cs | 3 +- .../JitDiagnoser.cs | 3 +- .../DotMemoryDiagnoser.cs | 6 +- .../DotTraceDiagnoser.cs | 6 +- .../Analysers/ZeroMeasurementAnalyser.cs | 2 +- .../Exporters/PhdExporterAttribute.cs | 7 + src/BenchmarkDotNet/BenchmarkDotNet.csproj | 4 +- src/BenchmarkDotNet/Configs/DefaultConfig.cs | 3 +- .../Cpu/HardwareIntrinsics.cs | 5 +- .../Detectors/Cpu/ICpuDetector.cs | 12 + .../Cpu/Linux/LinuxCpuDetector.cs} | 10 +- .../Cpu/Linux/LinuxCpuInfoParser.cs | 22 +- .../Cpu/Windows/MosCpuDetector.cs} | 29 +- .../Cpu/Windows/WindowsCpuDetector.cs | 3 + .../Cpu/Windows/WmicCpuDetector.cs} | 10 +- .../Cpu/Windows/WmicCpuInfoKeyNames.cs | 2 +- .../Cpu/Windows/WmicCpuInfoParser.cs | 23 +- .../Cpu/macOS/MacOsCpuDetector.cs} | 10 +- .../Cpu/macOS/SysctlCpuInfoParser.cs | 32 +- src/BenchmarkDotNet/Detectors/CpuDetector.cs | 29 + src/BenchmarkDotNet/Detectors/OsDetector.cs | 178 ++ .../Diagnosers/DiagnosersLoader.cs | 5 +- .../Diagnosers/PerfCollectProfiler.cs | 3 +- .../Diagnosers/UnresolvedDiagnoser.cs | 5 +- .../Disassemblers/ClrMdV2Disassembler.cs | 9 +- .../Disassemblers/DisassemblyDiagnoser.cs | 9 +- .../Disassemblers/WindowsDisassembler.cs | 3 +- .../Environments/BenchmarkEnvironmentInfo.cs | 2 +- .../Environments/HostEnvironmentInfo.cs | 47 +- .../Environments/OsBrandStringHelper.cs | 278 -- .../ProcessorBrandStringHelper.cs | 154 - .../Environments/Runtimes/ClrRuntime.cs | 3 +- .../Environments/microarchitectures.txt | 183 -- .../Exporters/Json/JsonExporterBase.cs | 73 +- ...{SimpleJson.cs => SimpleJsonSerializer.cs} | 8 +- .../Exporters/PhdJsonExporter.cs | 15 + .../Exporters/RPlotExporter.cs | 5 +- .../Exporters/Xml/SummaryDto.cs | 15 +- .../Extensions/MathExtensions.cs | 9 + .../Extensions/ProcessExtensions.cs | 7 +- .../Helpers/ArtifactFileNameHelper.cs | 3 +- .../Helpers/ExternalToolsHelper.cs | 3 +- .../Helpers/TaskbarProgress.cs | 3 +- .../Helpers/UserInteractionHelper.cs | 3 +- src/BenchmarkDotNet/Jobs/EnvironmentMode.cs | 3 +- src/BenchmarkDotNet/Loggers/ConsoleLogger.cs | 3 +- src/BenchmarkDotNet/Phd/BdnBenchmark.cs | 17 + src/BenchmarkDotNet/Phd/BdnEnvironment.cs | 12 + src/BenchmarkDotNet/Phd/BdnHost.cs | 17 + src/BenchmarkDotNet/Phd/BdnInfo.cs | 11 + src/BenchmarkDotNet/Phd/BdnLifecycle.cs | 57 + src/BenchmarkDotNet/Phd/BdnSchema.cs | 17 + .../Cpu/CompositeCpuInfoDetector.cs | 18 - .../Portability/Cpu/CpuInfo.cs | 33 - .../Portability/Cpu/CpuInfoFormatter.cs | 56 - .../Portability/Cpu/ICpuInfoDetector.cs | 10 - .../Cpu/Windows/WindowsCpuInfoDetector.cs | 3 - .../Portability/RuntimeInformation.cs | 185 +- .../Properties/BenchmarkDotNetInfo.cs | 10 + .../Reports/BenchmarkReport.cs | 52 + src/BenchmarkDotNet/Reports/Summary.cs | 30 +- .../Running/BenchmarkRunnerClean.cs | 3 +- src/BenchmarkDotNet/Running/ConsoleTitler.cs | 3 +- .../Running/PowerManagementApplier.cs | 5 +- .../CsProj/CsProjClassicNetToolchain.cs | 3 +- .../CustomDotNetCliToolchainBuilder.cs | 3 +- .../DotNetCli/DotNetCliCommandExecutor.cs | 3 +- .../Toolchains/GeneratorBase.cs | 5 +- .../InProcess/Emit/InProcessEmitExecutor.cs | 3 +- .../NoEmit/InProcessNoEmitExecutor.cs | 3 +- .../MonoAotLLVM/MonoAotLLVMGenerator.cs | 3 +- .../Toolchains/MonoWasm/WasmToolchain.cs | 3 +- .../Toolchains/NativeAot/Generator.cs | 5 +- .../Toolchains/Roslyn/Generator.cs | 5 +- .../Toolchains/ToolchainExtensions.cs | 5 +- .../ExpectedBenchmarkResultsTests.cs | 5 +- .../BuildTimeoutTests.cs | 3 +- .../ContinuousIntegration.cs | 3 +- .../DisassemblyDiagnoserTests.cs | 13 +- .../DotMemoryTests.cs | 3 +- .../DotTraceTests.cs | 3 +- .../MemoryDiagnoserTests.cs | 3 +- .../NativeAotTests.cs | 3 +- .../ThreadingDiagnoserTests.cs | 3 +- .../Attributes/ParamsAllValuesVerifyTests.cs | 3 +- .../BenchmarkDotNet.Tests.csproj | 22 +- .../Builders/HostEnvironmentInfoBuilder.cs | 31 +- .../Builders/VerifySettingsFactory.cs | 15 - .../Detectors/Cpu/CpuInfoFormatterTests.cs | 39 + .../Cpu/LinuxCpuInfoParserTests.cs | 58 +- .../Cpu/SysctlCpuInfoParserTests.cs | 23 +- ...puInfoProcessorWithDifferentCoresCount.txt | 0 .../ProcCpuInfoRealOneProcessorFourCores.txt | 0 .../ProcCpuInfoRealOneProcessorTwoCores.txt | 0 .../SysctlRealOneProcessorFourCores.txt | 0 .../Cpu/TestFiles/ryzen9-cpuinfo.txt | 0 .../Cpu/TestHelper.cs | 15 +- ...InfoFormatterTests.FormatTest.verified.txt | 0 .../Cpu/WmicCpuInfoParserTests.cs | 46 +- .../Environments/HostEnvironmentInfoTests.cs | 5 +- .../Environments/OsBrandStringTests.cs | 70 - .../Environments/ProcessorBrandStringTests.cs | 76 - .../Exporters/CommonExporterVerifyTests.cs | 3 +- .../Exporters/MarkdownExporterVerifyTests.cs | 31 +- .../Infra/TestOutputPresenter.cs | 9 + .../Infra/VerifyHelper.cs | 16 + .../LightJsonSerializerTests.cs | 56 + .../Mocks/MockFactory.cs | 7 +- .../Phd/Infra/PhdMock.cs | 13 + .../Phd/Infra/PhdTestExtensions.cs | 22 + tests/BenchmarkDotNet.Tests/Phd/PhdTests.cs | 179 ++ .../Phd.PhdIndexTest_key=01.verified.txt | 158 + .../Phd.PhdIndexTest_key=02.verified.txt | 333 ++ .../Phd.PhdIndexTest_key=03.verified.txt | 211 ++ .../Phd.PhdIndexTest_key=04.verified.txt | 340 ++ .../Phd.PhdIndexTest_key=05.verified.txt | 2723 +++++++++++++++++ ...hd.PhdIndexTest_key=default01.verified.txt | 146 + ...hd.PhdIndexTest_key=default02.verified.txt | 309 ++ ...hd.PhdIndexTest_key=default03.verified.txt | 196 ++ ...hd.PhdIndexTest_key=default04.verified.txt | 316 ++ ...hd.PhdIndexTest_key=default05.verified.txt | 2537 +++++++++++++++ ...Phd.PhdIndexTest_key=params01.verified.txt | 102 + .../Phd.PhdIndexTest_key=sort01.verified.txt | 58 + ...hd.PhdTableTest_key=default01.verified.txt | 128 + ...hd.PhdTableTest_key=default02.verified.txt | 202 ++ ...hd.PhdTableTest_key=default03.verified.txt | 140 + ...hd.PhdTableTest_key=default04.verified.txt | 207 ++ ...hd.PhdTableTest_key=default05.verified.txt | 1397 +++++++++ ...Phd.PhdTableTest_key=params01.verified.txt | 80 + .../Phd.PhdTableTest_key=sort01.verified.txt | 59 + .../Portability/Cpu/CpuInfoFormatterTests.cs | 30 - .../RuntimeVersionDetectionTests.cs | 3 +- .../BenchmarkDotNet.Tests/SimpleJsonTests.cs | 2 +- .../ConfigCompatibilityValidatorTests.cs | 3 +- 135 files changed, 10918 insertions(+), 1384 deletions(-) create mode 100644 src/BenchmarkDotNet/Attributes/Exporters/PhdExporterAttribute.cs rename src/BenchmarkDotNet/{Portability => Detectors}/Cpu/HardwareIntrinsics.cs (99%) create mode 100644 src/BenchmarkDotNet/Detectors/Cpu/ICpuDetector.cs rename src/BenchmarkDotNet/{Portability/Cpu/Linux/LinuxCpuInfoDetector.cs => Detectors/Cpu/Linux/LinuxCpuDetector.cs} (77%) rename src/BenchmarkDotNet/{Portability => Detectors}/Cpu/Linux/LinuxCpuInfoParser.cs (87%) rename src/BenchmarkDotNet/{Portability/Cpu/Windows/MosCpuInfoDetector.cs => Detectors/Cpu/Windows/MosCpuDetector.cs} (68%) create mode 100644 src/BenchmarkDotNet/Detectors/Cpu/Windows/WindowsCpuDetector.cs rename src/BenchmarkDotNet/{Portability/Cpu/Windows/WmicCpuInfoDetector.cs => Detectors/Cpu/Windows/WmicCpuDetector.cs} (78%) rename src/BenchmarkDotNet/{Portability => Detectors}/Cpu/Windows/WmicCpuInfoKeyNames.cs (84%) rename src/BenchmarkDotNet/{Portability => Detectors}/Cpu/Windows/WmicCpuInfoParser.cs (74%) rename src/BenchmarkDotNet/{Portability/Cpu/macOS/MacOsCpuInfoDetector.cs => Detectors/Cpu/macOS/MacOsCpuDetector.cs} (58%) rename src/BenchmarkDotNet/{Portability => Detectors}/Cpu/macOS/SysctlCpuInfoParser.cs (55%) create mode 100644 src/BenchmarkDotNet/Detectors/CpuDetector.cs create mode 100644 src/BenchmarkDotNet/Detectors/OsDetector.cs delete mode 100644 src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs delete mode 100644 src/BenchmarkDotNet/Environments/ProcessorBrandStringHelper.cs delete mode 100644 src/BenchmarkDotNet/Environments/microarchitectures.txt rename src/BenchmarkDotNet/Exporters/Json/{SimpleJson.cs => SimpleJsonSerializer.cs} (99%) create mode 100644 src/BenchmarkDotNet/Exporters/PhdJsonExporter.cs create mode 100644 src/BenchmarkDotNet/Extensions/MathExtensions.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnBenchmark.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnEnvironment.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnHost.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnInfo.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnLifecycle.cs create mode 100644 src/BenchmarkDotNet/Phd/BdnSchema.cs delete mode 100644 src/BenchmarkDotNet/Portability/Cpu/CompositeCpuInfoDetector.cs delete mode 100644 src/BenchmarkDotNet/Portability/Cpu/CpuInfo.cs delete mode 100644 src/BenchmarkDotNet/Portability/Cpu/CpuInfoFormatter.cs delete mode 100644 src/BenchmarkDotNet/Portability/Cpu/ICpuInfoDetector.cs delete mode 100644 src/BenchmarkDotNet/Portability/Cpu/Windows/WindowsCpuInfoDetector.cs delete mode 100644 tests/BenchmarkDotNet.Tests/Builders/VerifySettingsFactory.cs create mode 100644 tests/BenchmarkDotNet.Tests/Detectors/Cpu/CpuInfoFormatterTests.cs rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/LinuxCpuInfoParserTests.cs (78%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/SysctlCpuInfoParserTests.cs (61%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestFiles/ProcCpuInfoProcessorWithDifferentCoresCount.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestFiles/ProcCpuInfoRealOneProcessorFourCores.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestFiles/ProcCpuInfoRealOneProcessorTwoCores.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestFiles/SysctlRealOneProcessorFourCores.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestFiles/ryzen9-cpuinfo.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/TestHelper.cs (71%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/VerifiedFiles/CpuInfoFormatterTests.FormatTest.verified.txt (100%) rename tests/BenchmarkDotNet.Tests/{Portability => Detectors}/Cpu/WmicCpuInfoParserTests.cs (64%) delete mode 100644 tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs delete mode 100644 tests/BenchmarkDotNet.Tests/Environments/ProcessorBrandStringTests.cs create mode 100644 tests/BenchmarkDotNet.Tests/Infra/TestOutputPresenter.cs create mode 100644 tests/BenchmarkDotNet.Tests/Infra/VerifyHelper.cs create mode 100644 tests/BenchmarkDotNet.Tests/LightJsonSerializerTests.cs create mode 100644 tests/BenchmarkDotNet.Tests/Phd/Infra/PhdMock.cs create mode 100644 tests/BenchmarkDotNet.Tests/Phd/Infra/PhdTestExtensions.cs create mode 100644 tests/BenchmarkDotNet.Tests/Phd/PhdTests.cs create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=02.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=03.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=04.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=05.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default02.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default03.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default04.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default05.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=params01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=sort01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default02.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default03.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default04.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default05.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=params01.verified.txt create mode 100644 tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=sort01.verified.txt delete mode 100644 tests/BenchmarkDotNet.Tests/Portability/Cpu/CpuInfoFormatterTests.cs diff --git a/BenchmarkDotNet.sln b/BenchmarkDotNet.sln index 1df6c0aabd..9b6e6c42a2 100644 --- a/BenchmarkDotNet.sln +++ b/BenchmarkDotNet.sln @@ -59,6 +59,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BenchmarkDotNet.Exporters.P EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BenchmarkDotNet.Exporters.Plotting.Tests", "tests\BenchmarkDotNet.Exporters.Plotting.Tests\BenchmarkDotNet.Exporters.Plotting.Tests.csproj", "{199AC83E-30BD-40CD-87CE-0C838AC0320D}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perfolizer", "..\perfolizer\src\Perfolizer\Perfolizer\Perfolizer.csproj", "{CC6E253E-04E1-41CB-AA85-290A60E37677}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Perfolizer.Tests", "..\perfolizer\src\Perfolizer\Perfolizer.Tests\Perfolizer.Tests.csproj", "{71F1801D-D0AD-4A33-8253-B72776761D3A}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -161,6 +165,14 @@ Global {199AC83E-30BD-40CD-87CE-0C838AC0320D}.Debug|Any CPU.Build.0 = Debug|Any CPU {199AC83E-30BD-40CD-87CE-0C838AC0320D}.Release|Any CPU.ActiveCfg = Release|Any CPU {199AC83E-30BD-40CD-87CE-0C838AC0320D}.Release|Any CPU.Build.0 = Release|Any CPU + {CC6E253E-04E1-41CB-AA85-290A60E37677}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CC6E253E-04E1-41CB-AA85-290A60E37677}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CC6E253E-04E1-41CB-AA85-290A60E37677}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CC6E253E-04E1-41CB-AA85-290A60E37677}.Release|Any CPU.Build.0 = Release|Any CPU + {71F1801D-D0AD-4A33-8253-B72776761D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {71F1801D-D0AD-4A33-8253-B72776761D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {71F1801D-D0AD-4A33-8253-B72776761D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {71F1801D-D0AD-4A33-8253-B72776761D3A}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -190,6 +202,8 @@ Global {2E2283A3-6DA6-4482-8518-99D6D9F689AB} = {D6597E3A-6892-4A68-8E14-042FC941FDA2} {B92ECCEF-7C27-4012-9E19-679F3C40A6A6} = {D6597E3A-6892-4A68-8E14-042FC941FDA2} {199AC83E-30BD-40CD-87CE-0C838AC0320D} = {14195214-591A-45B7-851A-19D3BA2413F9} + {CC6E253E-04E1-41CB-AA85-290A60E37677} = {D6597E3A-6892-4A68-8E14-042FC941FDA2} + {71F1801D-D0AD-4A33-8253-B72776761D3A} = {14195214-591A-45B7-851A-19D3BA2413F9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {4D9AF12B-1F7F-45A7-9E8C-E4E46ADCBD1F} diff --git a/src/BenchmarkDotNet.Diagnostics.Windows/HardwareCounters.cs b/src/BenchmarkDotNet.Diagnostics.Windows/HardwareCounters.cs index 8b3c46b4d5..d159e72a65 100644 --- a/src/BenchmarkDotNet.Diagnostics.Windows/HardwareCounters.cs +++ b/src/BenchmarkDotNet.Diagnostics.Windows/HardwareCounters.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Portability; using BenchmarkDotNet.Toolchains.InProcess.Emit; @@ -31,7 +32,7 @@ private static readonly Dictionary EtwTranslations public static IEnumerable Validate(ValidationParameters validationParameters, bool mandatory) { - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) { yield return new ValidationError(true, "Hardware Counters and EtwProfiler are supported only on Windows"); yield break; diff --git a/src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs b/src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs index b189af0acb..0d06faf75b 100644 --- a/src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs +++ b/src/BenchmarkDotNet.Diagnostics.Windows/JitDiagnoser.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Loggers; @@ -33,7 +34,7 @@ public void Handle(HostSignal signal, DiagnoserActionParameters parameters) public IEnumerable Validate(ValidationParameters validationParameters) { - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) { yield return new ValidationError(true, $"{GetType().Name} is supported only on Windows"); } diff --git a/src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoser.cs b/src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoser.cs index 24e62feb31..5639aa0580 100644 --- a/src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoser.cs +++ b/src/BenchmarkDotNet.Diagnostics.dotMemory/DotMemoryDiagnoser.cs @@ -3,12 +3,12 @@ using System.Collections.Immutable; using System.Linq; using BenchmarkDotNet.Analysers; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Loggers; -using BenchmarkDotNet.Portability; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using BenchmarkDotNet.Validators; @@ -124,10 +124,10 @@ internal static bool IsSupported(RuntimeMoniker runtimeMoniker) case RuntimeMoniker.NetCoreApp20: case RuntimeMoniker.NetCoreApp21: case RuntimeMoniker.NetCoreApp22: - return RuntimeInformation.IsWindows(); + return OsDetector.IsWindows(); case RuntimeMoniker.NetCoreApp30: case RuntimeMoniker.NetCoreApp31: - return RuntimeInformation.IsWindows() || RuntimeInformation.IsLinux(); + return OsDetector.IsWindows() || OsDetector.IsLinux(); default: throw new ArgumentOutOfRangeException(nameof(runtimeMoniker), runtimeMoniker, $"Runtime moniker {runtimeMoniker} is not supported"); } diff --git a/src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoser.cs b/src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoser.cs index 2aada424b7..da06c83472 100644 --- a/src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoser.cs +++ b/src/BenchmarkDotNet.Diagnostics.dotTrace/DotTraceDiagnoser.cs @@ -3,12 +3,12 @@ using System.Collections.Immutable; using System.Linq; using BenchmarkDotNet.Analysers; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Loggers; -using BenchmarkDotNet.Portability; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains; @@ -118,10 +118,10 @@ internal static bool IsSupported(RuntimeMoniker runtimeMoniker) case RuntimeMoniker.NetCoreApp20: case RuntimeMoniker.NetCoreApp21: case RuntimeMoniker.NetCoreApp22: - return RuntimeInformation.IsWindows(); + return OsDetector.IsWindows(); case RuntimeMoniker.NetCoreApp30: case RuntimeMoniker.NetCoreApp31: - return RuntimeInformation.IsWindows() || RuntimeInformation.IsLinux(); + return OsDetector.IsWindows() || OsDetector.IsLinux(); default: throw new ArgumentOutOfRangeException(nameof(runtimeMoniker), runtimeMoniker, $"Runtime moniker {runtimeMoniker} is not supported"); } diff --git a/src/BenchmarkDotNet/Analysers/ZeroMeasurementAnalyser.cs b/src/BenchmarkDotNet/Analysers/ZeroMeasurementAnalyser.cs index 9269b3ebf0..4d83a5d154 100644 --- a/src/BenchmarkDotNet/Analysers/ZeroMeasurementAnalyser.cs +++ b/src/BenchmarkDotNet/Analysers/ZeroMeasurementAnalyser.cs @@ -19,7 +19,7 @@ private ZeroMeasurementAnalyser() { } protected override IEnumerable AnalyseReport(BenchmarkReport report, Summary summary) { - var currentFrequency = summary.HostEnvironmentInfo.CpuInfo.Value.MaxFrequency; + var currentFrequency = summary.HostEnvironmentInfo.Cpu.Value.MaxFrequency(); if (!currentFrequency.HasValue || currentFrequency <= 0) currentFrequency = FallbackCpuResolutionValue.ToFrequency(); diff --git a/src/BenchmarkDotNet/Attributes/Exporters/PhdExporterAttribute.cs b/src/BenchmarkDotNet/Attributes/Exporters/PhdExporterAttribute.cs new file mode 100644 index 0000000000..6b46db04b0 --- /dev/null +++ b/src/BenchmarkDotNet/Attributes/Exporters/PhdExporterAttribute.cs @@ -0,0 +1,7 @@ +using System; +using BenchmarkDotNet.Exporters; + +namespace BenchmarkDotNet.Attributes; + +[AttributeUsage(AttributeTargets.Class | AttributeTargets.Assembly, AllowMultiple = true)] +public class PhdExporterAttribute() : ExporterConfigBaseAttribute(new PhdJsonExporter()); \ No newline at end of file diff --git a/src/BenchmarkDotNet/BenchmarkDotNet.csproj b/src/BenchmarkDotNet/BenchmarkDotNet.csproj index 4bdceb0f8a..ba542c88c4 100644 --- a/src/BenchmarkDotNet/BenchmarkDotNet.csproj +++ b/src/BenchmarkDotNet/BenchmarkDotNet.csproj @@ -13,14 +13,13 @@ - - + @@ -47,6 +46,7 @@ + diff --git a/src/BenchmarkDotNet/Configs/DefaultConfig.cs b/src/BenchmarkDotNet/Configs/DefaultConfig.cs index 2323d4fdc4..b70333cc1d 100644 --- a/src/BenchmarkDotNet/Configs/DefaultConfig.cs +++ b/src/BenchmarkDotNet/Configs/DefaultConfig.cs @@ -4,6 +4,7 @@ using System.IO; using BenchmarkDotNet.Analysers; using BenchmarkDotNet.Columns; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.EventProcessors; using BenchmarkDotNet.Exporters; @@ -90,7 +91,7 @@ public string ArtifactsPath { get { - var root = RuntimeInformation.IsAndroid() ? + var root = OsDetector.IsAndroid() ? Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) : Directory.GetCurrentDirectory(); return Path.Combine(root, "BenchmarkDotNet.Artifacts"); diff --git a/src/BenchmarkDotNet/Portability/Cpu/HardwareIntrinsics.cs b/src/BenchmarkDotNet/Detectors/Cpu/HardwareIntrinsics.cs similarity index 99% rename from src/BenchmarkDotNet/Portability/Cpu/HardwareIntrinsics.cs rename to src/BenchmarkDotNet/Detectors/Cpu/HardwareIntrinsics.cs index be1d40c9ec..a8c7655272 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/HardwareIntrinsics.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/HardwareIntrinsics.cs @@ -2,15 +2,14 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Numerics; -using BenchmarkDotNet.Environments; using System.Text; - +using BenchmarkDotNet.Environments; #if NET6_0_OR_GREATER using System.Runtime.Intrinsics.X86; using System.Runtime.Intrinsics.Arm; #endif -namespace BenchmarkDotNet.Portability.Cpu +namespace BenchmarkDotNet.Detectors.Cpu { internal static class HardwareIntrinsics { diff --git a/src/BenchmarkDotNet/Detectors/Cpu/ICpuDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/ICpuDetector.cs new file mode 100644 index 0000000000..6c0fcf683c --- /dev/null +++ b/src/BenchmarkDotNet/Detectors/Cpu/ICpuDetector.cs @@ -0,0 +1,12 @@ +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Detectors.Cpu; + +/// +/// Loads the for the current hardware +/// +public interface ICpuDetector +{ + bool IsApplicable(); + PhdCpu? Detect(); +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuDetector.cs similarity index 77% rename from src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoDetector.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuDetector.cs index 8f6641d9d7..fd3c98d049 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoDetector.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuDetector.cs @@ -1,17 +1,19 @@ using System.Collections.Generic; using BenchmarkDotNet.Helpers; +using BenchmarkDotNet.Portability; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.Linux; +namespace BenchmarkDotNet.Detectors.Cpu.Linux; /// /// CPU information from output of the `cat /proc/cpuinfo` and `lscpu` command. /// Linux only. /// -internal class LinuxCpuInfoDetector : ICpuInfoDetector +internal class LinuxCpuDetector : ICpuDetector { - public bool IsApplicable() => RuntimeInformation.IsLinux(); + public bool IsApplicable() => OsDetector.IsLinux(); - public CpuInfo? Detect() + public PhdCpu? Detect() { if (!IsApplicable()) return null; diff --git a/src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoParser.cs b/src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuInfoParser.cs similarity index 87% rename from src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoParser.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuInfoParser.cs index 6e10ee9f17..b1e554a6fd 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Linux/LinuxCpuInfoParser.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Linux/LinuxCpuInfoParser.cs @@ -3,9 +3,11 @@ using System.Text.RegularExpressions; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; +using BenchmarkDotNet.Portability; using Perfolizer.Horology; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.Linux; +namespace BenchmarkDotNet.Detectors.Cpu.Linux; internal static class LinuxCpuInfoParser { @@ -26,7 +28,7 @@ private static class Lscpu /// Output of `cat /proc/cpuinfo` /// Output of `lscpu` - internal static CpuInfo Parse(string? cpuInfo, string? lscpu) + internal static PhdCpu Parse(string? cpuInfo, string? lscpu) { var processorModelNames = new HashSet(); var processorsToPhysicalCoreCount = new Dictionary(); @@ -87,13 +89,15 @@ internal static CpuInfo Parse(string? cpuInfo, string? lscpu) string processorName = processorModelNames.Count > 0 ? string.Join(", ", processorModelNames) : null; int? physicalProcessorCount = processorsToPhysicalCoreCount.Count > 0 ? processorsToPhysicalCoreCount.Count : null; int? physicalCoreCount = processorsToPhysicalCoreCount.Count > 0 ? processorsToPhysicalCoreCount.Values.Sum() : coresPerSocket; - return new CpuInfo( - processorName, - physicalProcessorCount, - physicalCoreCount, - logicalCoreCount > 0 ? logicalCoreCount : null, - nominalFrequency, - maxFrequency); + return new PhdCpu + { + ProcessorName = processorName, + PhysicalProcessorCount = physicalProcessorCount, + PhysicalCoreCount = physicalCoreCount, + LogicalCoreCount = logicalCoreCount > 0 ? logicalCoreCount : null, + NominalFrequencyHz = nominalFrequency?.Hertz.RoundToLong(), + MaxFrequencyHz = maxFrequency?.Hertz.RoundToLong() + }; } internal static Frequency? ParseFrequencyFromBrandString(string brandString) diff --git a/src/BenchmarkDotNet/Portability/Cpu/Windows/MosCpuInfoDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/Windows/MosCpuDetector.cs similarity index 68% rename from src/BenchmarkDotNet/Portability/Cpu/Windows/MosCpuInfoDetector.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Windows/MosCpuDetector.cs index 5a1c6f2cdb..8c0b2718eb 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Windows/MosCpuInfoDetector.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Windows/MosCpuDetector.cs @@ -1,24 +1,26 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using System.Management; +using BenchmarkDotNet.Extensions; +using BenchmarkDotNet.Portability; using Perfolizer.Horology; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.Windows; +namespace BenchmarkDotNet.Detectors.Cpu.Windows; -internal class MosCpuInfoDetector : ICpuInfoDetector +internal class MosCpuDetector : ICpuDetector { #if NET6_0_OR_GREATER [System.Runtime.Versioning.SupportedOSPlatform("windows")] #endif - public bool IsApplicable() => RuntimeInformation.IsWindows() && + public bool IsApplicable() => OsDetector.IsWindows() && RuntimeInformation.IsFullFramework && !RuntimeInformation.IsMono; #if NET6_0_OR_GREATER [System.Runtime.Versioning.SupportedOSPlatform("windows")] #endif - public CpuInfo? Detect() + public PhdCpu? Detect() { if (!IsApplicable()) return null; @@ -49,11 +51,14 @@ public bool IsApplicable() => RuntimeInformation.IsWindows() && ? Frequency.FromMHz(sumMaxFrequency * 1.0 / processorsCount) : null; - return new CpuInfo( - processorName, - GetCount(processorsCount), GetCount(physicalCoreCount), GetCount(logicalCoreCount), - maxFrequency, maxFrequency); - - int? GetCount(int count) => count > 0 ? count : null; + return new PhdCpu + { + ProcessorName = processorName, + PhysicalProcessorCount = processorsCount > 0 ? processorsCount : null, + PhysicalCoreCount = physicalCoreCount > 0 ? physicalCoreCount : null, + LogicalCoreCount = logicalCoreCount > 0 ? logicalCoreCount : null, + NominalFrequencyHz = maxFrequency?.Hertz.RoundToLong(), + MaxFrequencyHz = maxFrequency?.Hertz.RoundToLong() + }; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Detectors/Cpu/Windows/WindowsCpuDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WindowsCpuDetector.cs new file mode 100644 index 0000000000..9969a1bca0 --- /dev/null +++ b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WindowsCpuDetector.cs @@ -0,0 +1,3 @@ +namespace BenchmarkDotNet.Detectors.Cpu.Windows; + +internal class WindowsCpuDetector() : CpuDetector(new MosCpuDetector(), new WmicCpuDetector()); \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuDetector.cs similarity index 78% rename from src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoDetector.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuDetector.cs index 6dbf1fad8d..e7ae5401bc 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoDetector.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuDetector.cs @@ -1,19 +1,21 @@ using System.IO; using BenchmarkDotNet.Helpers; +using BenchmarkDotNet.Portability; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.Windows; +namespace BenchmarkDotNet.Detectors.Cpu.Windows; /// /// CPU information from output of the `wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors /Format:List` command. /// Windows only. /// -internal class WmicCpuInfoDetector : ICpuInfoDetector +internal class WmicCpuDetector : ICpuDetector { private const string DefaultWmicPath = @"C:\Windows\System32\wbem\WMIC.exe"; - public bool IsApplicable() => RuntimeInformation.IsWindows(); + public bool IsApplicable() => OsDetector.IsWindows(); - public CpuInfo? Detect() + public PhdCpu? Detect() { if (!IsApplicable()) return null; diff --git a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoKeyNames.cs b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoKeyNames.cs similarity index 84% rename from src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoKeyNames.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoKeyNames.cs index 1e08cc0bfb..65d8ecf7d8 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoKeyNames.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoKeyNames.cs @@ -1,4 +1,4 @@ -namespace BenchmarkDotNet.Portability.Cpu.Windows; +namespace BenchmarkDotNet.Detectors.Cpu.Windows; internal static class WmicCpuInfoKeyNames { diff --git a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoParser.cs b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoParser.cs similarity index 74% rename from src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoParser.cs rename to src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoParser.cs index 47ede5f0cc..af6ed8c12e 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/Windows/WmicCpuInfoParser.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/Windows/WmicCpuInfoParser.cs @@ -1,16 +1,18 @@ using System.Collections.Generic; +using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; using Perfolizer.Horology; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.Windows; +namespace BenchmarkDotNet.Detectors.Cpu.Windows; internal static class WmicCpuInfoParser { /// - /// Parses wmic output and returns + /// Parses wmic output and returns /// /// Output of `wmic cpu get Name, NumberOfCores, NumberOfLogicalProcessors /Format:List` - internal static CpuInfo Parse(string? wmicOutput) + internal static PhdCpu Parse(string? wmicOutput) { var processorModelNames = new HashSet(); int physicalCoreCount = 0; @@ -50,11 +52,14 @@ internal static CpuInfo Parse(string? wmicOutput) ? Frequency.FromMHz(sumMaxFrequency / processorsCount) : null; - return new CpuInfo( - processorName, - GetCount(processorsCount), GetCount(physicalCoreCount), GetCount(logicalCoreCount), - maxFrequency, maxFrequency); - - int? GetCount(int count) => count > 0 ? count : null; + return new PhdCpu + { + ProcessorName = processorName, + PhysicalProcessorCount = processorsCount > 0 ? processorsCount : null, + PhysicalCoreCount = physicalCoreCount > 0 ? physicalCoreCount : null, + LogicalCoreCount = logicalCoreCount > 0 ? logicalCoreCount : null, + NominalFrequencyHz = maxFrequency?.Hertz.RoundToLong(), + MaxFrequencyHz = maxFrequency?.Hertz.RoundToLong() + }; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/macOS/MacOsCpuInfoDetector.cs b/src/BenchmarkDotNet/Detectors/Cpu/macOS/MacOsCpuDetector.cs similarity index 58% rename from src/BenchmarkDotNet/Portability/Cpu/macOS/MacOsCpuInfoDetector.cs rename to src/BenchmarkDotNet/Detectors/Cpu/macOS/MacOsCpuDetector.cs index 40b675b299..54bf602020 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/macOS/MacOsCpuInfoDetector.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/macOS/MacOsCpuDetector.cs @@ -1,16 +1,18 @@ using BenchmarkDotNet.Helpers; +using BenchmarkDotNet.Portability; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.macOS; +namespace BenchmarkDotNet.Detectors.Cpu.macOS; /// /// CPU information from output of the `sysctl -a` command. /// MacOSX only. /// -internal class MacOsCpuInfoDetector : ICpuInfoDetector +internal class MacOsCpuDetector : ICpuDetector { - public bool IsApplicable() => RuntimeInformation.IsMacOS(); + public bool IsApplicable() => OsDetector.IsMacOS(); - public CpuInfo? Detect() + public PhdCpu? Detect() { if (!IsApplicable()) return null; diff --git a/src/BenchmarkDotNet/Portability/Cpu/macOS/SysctlCpuInfoParser.cs b/src/BenchmarkDotNet/Detectors/Cpu/macOS/SysctlCpuInfoParser.cs similarity index 55% rename from src/BenchmarkDotNet/Portability/Cpu/macOS/SysctlCpuInfoParser.cs rename to src/BenchmarkDotNet/Detectors/Cpu/macOS/SysctlCpuInfoParser.cs index f29afc1c8e..9a96a5b677 100644 --- a/src/BenchmarkDotNet/Portability/Cpu/macOS/SysctlCpuInfoParser.cs +++ b/src/BenchmarkDotNet/Detectors/Cpu/macOS/SysctlCpuInfoParser.cs @@ -2,8 +2,9 @@ using System.Diagnostics.CodeAnalysis; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; +using Perfolizer.Phd.Dto; -namespace BenchmarkDotNet.Portability.Cpu.macOS; +namespace BenchmarkDotNet.Detectors.Cpu.macOS; internal static class SysctlCpuInfoParser { @@ -19,22 +20,27 @@ private static class Sysctl /// Output of `sysctl -a` [SuppressMessage("ReSharper", "StringLiteralTypo")] - internal static CpuInfo Parse(string? sysctlOutput) + internal static PhdCpu Parse(string? sysctlOutput) { var sysctl = SectionsHelper.ParseSection(sysctlOutput, ':'); string processorName = sysctl.GetValueOrDefault(Sysctl.ProcessorName); - int? physicalProcessorCount = GetPositiveIntValue(sysctl, Sysctl.PhysicalProcessorCount); - int? physicalCoreCount = GetPositiveIntValue(sysctl, Sysctl.PhysicalCoreCount); - int? logicalCoreCount = GetPositiveIntValue(sysctl, Sysctl.LogicalCoreCount); - long? nominalFrequency = GetPositiveLongValue(sysctl, Sysctl.NominalFrequency); - long? maxFrequency = GetPositiveLongValue(sysctl, Sysctl.MaxFrequency); - return new CpuInfo( - processorName, - physicalProcessorCount, physicalCoreCount, logicalCoreCount, - nominalFrequency, maxFrequency); + int? physicalProcessorCount = PositiveIntValue(sysctl, Sysctl.PhysicalProcessorCount); + int? physicalCoreCount = PositiveIntValue(sysctl, Sysctl.PhysicalCoreCount); + int? logicalCoreCount = PositiveIntValue(sysctl, Sysctl.LogicalCoreCount); + long? nominalFrequency = PositiveLongValue(sysctl, Sysctl.NominalFrequency); + long? maxFrequency = PositiveLongValue(sysctl, Sysctl.MaxFrequency); + return new PhdCpu + { + ProcessorName = processorName, + PhysicalProcessorCount = physicalProcessorCount, + PhysicalCoreCount = physicalCoreCount, + LogicalCoreCount = logicalCoreCount, + NominalFrequencyHz = nominalFrequency, + MaxFrequencyHz = maxFrequency + }; } - private static int? GetPositiveIntValue(Dictionary sysctl, string keyName) + private static int? PositiveIntValue(Dictionary sysctl, string keyName) { if (sysctl.TryGetValue(keyName, out string value) && int.TryParse(value, out int result) && @@ -43,7 +49,7 @@ internal static CpuInfo Parse(string? sysctlOutput) return null; } - private static long? GetPositiveLongValue(Dictionary sysctl, string keyName) + private static long? PositiveLongValue(Dictionary sysctl, string keyName) { if (sysctl.TryGetValue(keyName, out string value) && long.TryParse(value, out long result) && diff --git a/src/BenchmarkDotNet/Detectors/CpuDetector.cs b/src/BenchmarkDotNet/Detectors/CpuDetector.cs new file mode 100644 index 0000000000..4cf183430d --- /dev/null +++ b/src/BenchmarkDotNet/Detectors/CpuDetector.cs @@ -0,0 +1,29 @@ +using System; +using System.Linq; +using BenchmarkDotNet.Detectors.Cpu; +using BenchmarkDotNet.Detectors.Cpu.Linux; +using BenchmarkDotNet.Detectors.Cpu.macOS; +using BenchmarkDotNet.Detectors.Cpu.Windows; +using BenchmarkDotNet.Extensions; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Detectors; + +public class CpuDetector(params ICpuDetector[] detectors) : ICpuDetector +{ + public static CpuDetector CrossPlatform => new ( + new WindowsCpuDetector(), + new LinuxCpuDetector(), + new MacOsCpuDetector()); + + private static readonly Lazy LazyCpu = new (() => CrossPlatform.Detect()); + public static PhdCpu? Cpu => LazyCpu.Value; + + public bool IsApplicable() => detectors.Any(loader => loader.IsApplicable()); + + public PhdCpu? Detect() => detectors + .Where(loader => loader.IsApplicable()) + .Select(loader => loader.Detect()) + .WhereNotNull() + .FirstOrDefault(); +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Detectors/OsDetector.cs b/src/BenchmarkDotNet/Detectors/OsDetector.cs new file mode 100644 index 0000000000..9a3a546665 --- /dev/null +++ b/src/BenchmarkDotNet/Detectors/OsDetector.cs @@ -0,0 +1,178 @@ +using System; +using System.Collections.Generic; +using System.IO; +using BenchmarkDotNet.Helpers; +using Microsoft.Win32; +using Perfolizer.Phd.Dto; +using System.Runtime.InteropServices; +using BenchmarkDotNet.Extensions; +using static System.Runtime.InteropServices.RuntimeInformation; +using RuntimeEnvironment = Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment; + +namespace BenchmarkDotNet.Detectors; + +public class OsDetector +{ + public static readonly OsDetector Instance = new (); + private OsDetector() { } + + internal static string ExecutableExtension => IsWindows() ? ".exe" : string.Empty; + internal static string ScriptFileExtension => IsWindows() ? ".bat" : ".sh"; + + private readonly Lazy os = new (() => ResolveOs().SetDisplay()); + public static PhdOs GetOs() => Instance.os.Value; + + private static PhdOs ResolveOs() + { + if (IsMacOS()) + { + string systemVersion = ExternalToolsHelper.MacSystemProfilerData.Value.GetValueOrDefault("System Version") ?? ""; + string kernelVersion = ExternalToolsHelper.MacSystemProfilerData.Value.GetValueOrDefault("Kernel Version") ?? ""; + return new PhdOs + { + Name = "macOS", + Version = systemVersion, + KernelVersion = kernelVersion + }; + } + + if (IsLinux()) + { + try + { + string version = LinuxOsReleaseHelper.GetNameByOsRelease(File.ReadAllLines("/etc/os-release")); + bool wsl = IsUnderWsl(); + return new PhdOs + { + Name = "Linux", + Version = version, + Container = wsl ? "WSL" : null + }; + } + catch (Exception) + { + // Ignore + } + } + + string operatingSystem = RuntimeEnvironment.OperatingSystem; + string operatingSystemVersion = RuntimeEnvironment.OperatingSystemVersion; + if (IsWindows()) + { + int? ubr = GetWindowsUbr(); + if (ubr != null) + operatingSystemVersion += $".{ubr}"; + } + return new PhdOs + { + Name = operatingSystem, + Version = operatingSystemVersion + }; + } + + private static bool IsUnderWsl() + { + if (!IsLinux()) + return false; + try + { + return File.Exists("/proc/sys/fs/binfmt_misc/WSLInterop"); // https://superuser.com/a/1749811 + } + catch (Exception) + { + return false; + } + } + + // TODO: Introduce a common util API for registry calls, use it also in BenchmarkDotNet.Toolchains.CsProj.GetCurrentVersionBasedOnWindowsRegistry + /// + /// On Windows, this method returns UBR (Update Build Revision) based on Registry. + /// Returns null if the value is not available + /// + /// + private static int? GetWindowsUbr() + { + if (IsWindows()) + { + try + { + using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)) + using (var ndpKey = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion")) + { + if (ndpKey == null) + return null; + + return Convert.ToInt32(ndpKey.GetValue("UBR")); + } + } + catch (Exception) + { + return null; + } + } + return null; + } + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("windows")] +#endif + internal static bool IsWindows() => +#if NET6_0_OR_GREATER + OperatingSystem.IsWindows(); // prefer linker-friendly OperatingSystem APIs +#else + IsOSPlatform(OSPlatform.Windows); +#endif + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("linux")] +#endif + internal static bool IsLinux() => +#if NET6_0_OR_GREATER + OperatingSystem.IsLinux(); +#else + IsOSPlatform(OSPlatform.Linux); +#endif + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("macos")] +#endif + // ReSharper disable once InconsistentNaming + internal static bool IsMacOS() => +#if NET6_0_OR_GREATER + OperatingSystem.IsMacOS(); +#else + IsOSPlatform(OSPlatform.OSX); +#endif + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("android")] +#endif + internal static bool IsAndroid() => +#if NET6_0_OR_GREATER + OperatingSystem.IsAndroid(); +#else + Type.GetType("Java.Lang.Object, Mono.Android") != null; +#endif + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("ios")] +#endif + // ReSharper disable once InconsistentNaming + internal static bool IsIOS() => +#if NET6_0_OR_GREATER + OperatingSystem.IsIOS(); +#else + Type.GetType("Foundation.NSObject, Xamarin.iOS") != null; +#endif + +#if NET6_0_OR_GREATER + [System.Runtime.Versioning.SupportedOSPlatformGuard("tvos")] +#endif + // ReSharper disable once InconsistentNaming + internal static bool IsTvOS() => +#if NET6_0_OR_GREATER + OperatingSystem.IsTvOS(); +#else + IsOSPlatform(OSPlatform.Create("TVOS")); +#endif +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Diagnosers/DiagnosersLoader.cs b/src/BenchmarkDotNet/Diagnosers/DiagnosersLoader.cs index 1e96f8e495..40e8f231e7 100644 --- a/src/BenchmarkDotNet/Diagnosers/DiagnosersLoader.cs +++ b/src/BenchmarkDotNet/Diagnosers/DiagnosersLoader.cs @@ -5,6 +5,7 @@ using System.Reflection; using System.Threading; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Portability; @@ -40,11 +41,11 @@ private static IEnumerable LoadDiagnosers() { yield return EventPipeProfiler.Default; - if (RuntimeInformation.IsLinux()) + if (OsDetector.IsLinux()) yield return PerfCollectProfiler.Default; } - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) yield break; foreach (var windowsDiagnoser in LoadWindowsDiagnosers()) diff --git a/src/BenchmarkDotNet/Diagnosers/PerfCollectProfiler.cs b/src/BenchmarkDotNet/Diagnosers/PerfCollectProfiler.cs index 6dd5bdd2e9..f1b584ce09 100644 --- a/src/BenchmarkDotNet/Diagnosers/PerfCollectProfiler.cs +++ b/src/BenchmarkDotNet/Diagnosers/PerfCollectProfiler.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Runtime.InteropServices; using BenchmarkDotNet.Analysers; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Extensions; @@ -53,7 +54,7 @@ public class PerfCollectProfiler : IProfiler public IEnumerable Validate(ValidationParameters validationParameters) { - if (!RuntimeInformation.IsLinux()) + if (!OsDetector.IsLinux()) { yield return new ValidationError(true, "The PerfCollectProfiler works only on Linux!"); yield break; diff --git a/src/BenchmarkDotNet/Diagnosers/UnresolvedDiagnoser.cs b/src/BenchmarkDotNet/Diagnosers/UnresolvedDiagnoser.cs index f00bb4ed67..43cc910559 100644 --- a/src/BenchmarkDotNet/Diagnosers/UnresolvedDiagnoser.cs +++ b/src/BenchmarkDotNet/Diagnosers/UnresolvedDiagnoser.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using BenchmarkDotNet.Analysers; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Loggers; @@ -31,10 +32,10 @@ public IEnumerable Validate(ValidationParameters validationPara => new[] { new ValidationError(false, GetErrorMessage()) }; private string GetErrorMessage() => $@"Unable to resolve {unresolved.Name} diagnoser using dynamic assembly loading. - {(RuntimeInformation.IsFullFramework || RuntimeInformation.IsWindows() + {(RuntimeInformation.IsFullFramework || OsDetector.IsWindows() ? "Please make sure that you have installed the latest BenchmarkDotNet.Diagnostics.Windows package. " + Environment.NewLine + "If you are using `dotnet build` you also need to consume one of its public types to make sure that MSBuild copies it to the output directory. " + "The alternative is to use `true` in your project file." - : $"Please make sure that it's supported on {RuntimeInformation.GetOsVersion()}")}"; + : $"Please make sure that it's supported on {OsDetector.GetOs()}")}"; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Disassemblers/ClrMdV2Disassembler.cs b/src/BenchmarkDotNet/Disassemblers/ClrMdV2Disassembler.cs index 16b3891d24..aff7d276d6 100644 --- a/src/BenchmarkDotNet/Disassemblers/ClrMdV2Disassembler.cs +++ b/src/BenchmarkDotNet/Disassemblers/ClrMdV2Disassembler.cs @@ -7,6 +7,7 @@ using System.IO; using System.Linq; using System.Text.RegularExpressions; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; namespace BenchmarkDotNet.Disassemblers @@ -19,11 +20,11 @@ internal abstract class ClrMdV2Disassembler private static ulong GetMinValidAddress() { // https://github.com/dotnet/BenchmarkDotNet/pull/2413#issuecomment-1688100117 - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) return ushort.MaxValue + 1; - if (RuntimeInformation.IsLinux()) + if (OsDetector.IsLinux()) return (ulong) Environment.SystemPageSize; - if (RuntimeInformation.IsMacOS()) + if (OsDetector.IsMacOS()) return RuntimeInformation.GetCurrentPlatform() switch { Environments.Platform.X86 or Environments.Platform.X64 => 4096, @@ -335,7 +336,7 @@ protected void TryTranslateAddressToName(ulong address, bool isAddressPrecodeMD, protected void FlushCachedDataIfNeeded(IDataReader dataTargetDataReader, ulong address, byte[] buffer) { - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) { if (dataTargetDataReader.Read(address, buffer) <= 0) { diff --git a/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs b/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs index 2dd18a1b61..7d0f95326c 100644 --- a/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs +++ b/src/BenchmarkDotNet/Disassemblers/DisassemblyDiagnoser.cs @@ -3,6 +3,7 @@ using System.Linq; using BenchmarkDotNet.Analysers; using BenchmarkDotNet.Columns; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Disassemblers; using BenchmarkDotNet.Disassemblers.Exporters; using BenchmarkDotNet.Engines; @@ -75,7 +76,7 @@ public void Handle(HostSignal signal, DiagnoserActionParameters parameters) case HostSignal.AfterAll when ShouldUseSameArchitectureDisassembler(benchmark, parameters): results.Add(benchmark, sameArchitectureDisassembler.Disassemble(parameters)); break; - case HostSignal.AfterAll when RuntimeInformation.IsWindows() && !ShouldUseMonoDisassembler(benchmark): + case HostSignal.AfterAll when OsDetector.IsWindows() && !ShouldUseMonoDisassembler(benchmark): results.Add(benchmark, windowsDifferentArchitectureDisassembler.Disassemble(parameters)); break; case HostSignal.SeparateLogic when ShouldUseMonoDisassembler(benchmark): @@ -112,7 +113,7 @@ public IEnumerable Validate(ValidationParameters validationPara if (ShouldUseClrMdDisassembler(benchmark)) { - if (RuntimeInformation.IsLinux()) + if (OsDetector.IsLinux()) { var runtime = benchmark.Job.ResolveValue(EnvironmentMode.RuntimeCharacteristic, EnvironmentResolver.Instance); @@ -143,13 +144,13 @@ private static bool ShouldUseMonoDisassembler(BenchmarkCase benchmarkCase) // when we add macOS support, RuntimeInformation.IsMacOS() needs to be added here private static bool ShouldUseClrMdDisassembler(BenchmarkCase benchmarkCase) - => !ShouldUseMonoDisassembler(benchmarkCase) && (RuntimeInformation.IsWindows() || RuntimeInformation.IsLinux()); + => !ShouldUseMonoDisassembler(benchmarkCase) && (OsDetector.IsWindows() || OsDetector.IsLinux()); private static bool ShouldUseSameArchitectureDisassembler(BenchmarkCase benchmarkCase, DiagnoserActionParameters parameters) { if (ShouldUseClrMdDisassembler(benchmarkCase)) { - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) { return WindowsDisassembler.GetDisassemblerArchitecture(parameters.Process, benchmarkCase.Job.Environment.Platform) == RuntimeInformation.GetCurrentPlatform(); diff --git a/src/BenchmarkDotNet/Disassemblers/WindowsDisassembler.cs b/src/BenchmarkDotNet/Disassemblers/WindowsDisassembler.cs index 6bec70162a..8051ba3463 100644 --- a/src/BenchmarkDotNet/Disassemblers/WindowsDisassembler.cs +++ b/src/BenchmarkDotNet/Disassemblers/WindowsDisassembler.cs @@ -7,6 +7,7 @@ using System.Text; using System.Xml; using System.Xml.Serialization; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Extensions; @@ -165,7 +166,7 @@ public static bool Is64Bit(Process process) if (Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE") == "x86") return false; - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) { IsWow64Process(process.Handle, out bool isWow64); diff --git a/src/BenchmarkDotNet/Environments/BenchmarkEnvironmentInfo.cs b/src/BenchmarkDotNet/Environments/BenchmarkEnvironmentInfo.cs index e13d50b650..f2e2f34e26 100644 --- a/src/BenchmarkDotNet/Environments/BenchmarkEnvironmentInfo.cs +++ b/src/BenchmarkDotNet/Environments/BenchmarkEnvironmentInfo.cs @@ -2,10 +2,10 @@ using System.Diagnostics; using System.Linq; using System.Runtime; +using BenchmarkDotNet.Detectors.Cpu; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; -using BenchmarkDotNet.Portability.Cpu; using BenchmarkDotNet.Properties; using BenchmarkDotNet.Validators; using JetBrains.Annotations; diff --git a/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs b/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs index 7983f82ebc..78e1624f4a 100644 --- a/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs +++ b/src/BenchmarkDotNet/Environments/HostEnvironmentInfo.cs @@ -2,16 +2,20 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Loggers; +using BenchmarkDotNet.Phd; using BenchmarkDotNet.Portability; -using BenchmarkDotNet.Portability.Cpu; using BenchmarkDotNet.Properties; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Toolchains.DotNetCli; using JetBrains.Annotations; +using Perfolizer.Helpers; using Perfolizer.Horology; using Perfolizer.Metrology; +using Perfolizer.Phd; +using Perfolizer.Phd.Dto; namespace BenchmarkDotNet.Environments { @@ -32,15 +36,12 @@ public class HostEnvironmentInfo : BenchmarkEnvironmentInfo public string BenchmarkDotNetVersion { get; protected set; } - /// - /// Could be expensive - /// - public Lazy OsVersion { get; protected set; } - /// /// is expensive to call (1s) /// - public Lazy CpuInfo { get; protected set; } + public Lazy Cpu { get; protected set; } + + public Lazy Os { get; protected set; } /// /// .NET Core SDK version @@ -65,35 +66,36 @@ public class HostEnvironmentInfo : BenchmarkEnvironmentInfo public Lazy> AntivirusProducts { get; } - public Lazy VirtualMachineHypervisor { get; protected set; } + // TODO: Join with PhdOs + public Lazy VirtualMachineHypervisor { get; protected set; } protected HostEnvironmentInfo() { BenchmarkDotNetVersion = BenchmarkDotNetInfo.Instance.BrandVersion; - OsVersion = new Lazy(RuntimeInformation.GetOsVersion); - CpuInfo = new Lazy(RuntimeInformation.GetCpuInfo); ChronometerFrequency = Chronometer.Frequency; HardwareTimerKind = Chronometer.HardwareTimerKind; DotNetSdkVersion = new Lazy(DotNetCliCommandExecutor.GetDotNetSdkVersion); IsMonoInstalled = new Lazy(() => !string.IsNullOrEmpty(ProcessHelper.RunAndReadOutput("mono", "--version"))); AntivirusProducts = new Lazy>(RuntimeInformation.GetAntivirusProducts); VirtualMachineHypervisor = new Lazy(RuntimeInformation.GetVirtualMachineHypervisor); + Os = new Lazy(OsDetector.GetOs); + Cpu = new Lazy(CpuDetector.CrossPlatform.Detect); } public new static HostEnvironmentInfo GetCurrent() => current ??= new HostEnvironmentInfo(); public override IEnumerable ToFormattedString() { - string vmName = VirtualMachineHypervisor.Value?.Name; + string? vmName = VirtualMachineHypervisor.Value?.Name; if (!string.IsNullOrEmpty(vmName)) - yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value} ({vmName})"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {Os.Value.ToBrandString()} ({vmName})"; else if (RuntimeInformation.IsRunningInContainer) - yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value} (container)"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {Os.Value.ToBrandString()} (container)"; else - yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {OsVersion.Value}"; + yield return $"{BenchmarkDotNetCaption} v{BenchmarkDotNetVersion}, {Os.Value.ToBrandString()}"; - yield return CpuInfoFormatter.Format(CpuInfo.Value); + yield return Cpu.Value.ToFullBrandName(); if (HardwareTimerKind != HardwareTimerKind.Unknown) { string frequency = ChronometerFrequency.ToString(FrequencyUnit.Hz, unitPresentation: UnitHelper.DefaultPresentation); @@ -104,7 +106,7 @@ public override IEnumerable ToFormattedString() if (RuntimeInformation.IsNetCore && IsDotNetCliInstalled()) { - // this wonderful version number contains words like "preview" and ... 5 segments so it can not be parsed by Version.Parse. Example: "5.0.100-preview.8.20362.3" + // this wonderful version number contains words like "preview" and ... 5 segments, so it can not be parsed by Version.Parse. Example: "5.0.100-preview.8.20362.3" if (int.TryParse(new string(DotNetSdkVersion.Value.TrimStart().TakeWhile(char.IsDigit).ToArray()), out int major) && major >= 5) yield return $".NET SDK {DotNetSdkVersion.Value}"; else @@ -131,5 +133,18 @@ public static string GetInformation() sb.AppendLine(Summary.BuildAllRuntimes(hostEnvironmentInfo, Array.Empty())); return sb.ToString(); } + + public BdnHost ToPhd() => new () + { + Cpu = Cpu.Value, + Os = Os.Value, + RuntimeVersion = RuntimeVersion, + HasAttachedDebugger = HasAttachedDebugger, + HasRyuJit = HasRyuJit, + Configuration = Configuration, + DotNetSdkVersion = DotNetSdkVersion.Value, + ChronometerFrequency = ChronometerFrequency.Hertz, + HardwareTimerKind = HardwareTimerKind.ToString() + }; } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs b/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs deleted file mode 100644 index 045c1f7543..0000000000 --- a/src/BenchmarkDotNet/Environments/OsBrandStringHelper.cs +++ /dev/null @@ -1,278 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using BenchmarkDotNet.Extensions; - -namespace BenchmarkDotNet.Environments -{ - [SuppressMessage("ReSharper", "ClassNeverInstantiated.Global")] - public class OsBrandStringHelper - { - // See https://en.wikipedia.org/wiki/Ver_(command) - // See https://docs.microsoft.com/en-us/windows/release-health/release-information - // See https://docs.microsoft.com/en-us/windows/release-health/windows11-release-information - private static readonly Dictionary WindowsBrandVersions = new Dictionary - { - { "1.04", "1.0" }, - { "2.11", "2.0" }, - { "3", "3.0" }, - { "3.10.528", "NT 3.1" }, - { "3.11", "for Workgroups 3.11" }, - { "3.50.807", "NT 3.5" }, - { "3.51.1057", "NT 3.51" }, - { "4.00.950", "95" }, - { "4.00.1111", "95 OSR2" }, - { "4.03.1212-1214", "95 OSR2.1" }, - { "4.03.1214", "95 OSR2.5" }, - { "4.00.1381", "NT 4.0" }, - { "4.10.1998", "98" }, - { "4.10.2222", "98 SE" }, - { "4.90.2380.2", "ME Beta" }, - { "4.90.2419", "ME Beta 2" }, - { "4.90.3000", "ME" }, - { "5.00.1515", "NT 5.0 Beta" }, - { "5.00.2031", "2000 Beta 3" }, - { "5.00.2128", "2000 RC2" }, - { "5.00.2183", "2000 RC3" }, - { "5.00.2195", "2000" }, - { "5.0.2195", "2000 Professional" }, - { "5.1.2505", "XP RC1" }, - { "5.1.2600", "XP" }, - { "5.1.2600.1105-1106", "XP SP1" }, - { "5.1.2600.2180", "XP SP2" }, - { "5.2.3541", ".NET Server interim" }, - { "5.2.3590", ".NET Server Beta 3" }, - { "5.2.3660", ".NET Server RC1" }, - { "5.2.3718", ".NET Server 2003 RC2" }, - { "5.2.3763", "Server 2003 Beta" }, - { "5.2.3790", "XP Professional x64 Edition" }, - { "5.2.3790.1180", "Server 2003 SP1" }, - { "5.2.3790.1218", "Server 2003" }, - { "6.0.5048", "Longhorn" }, - { "6.0.5112", "Vista Beta 1" }, - { "6.0.5219", "Vista CTP" }, - { "6.0.5259", "Vista TAP Preview" }, - { "6.0.5270", "Vista CTP December" }, - { "6.0.5308", "Vista CTP February" }, - { "6.0.5342", "Vista CTP Refresh" }, - { "6.0.5365", "Vista April EWD" }, - { "6.0.5381", "Vista Beta 2 Preview" }, - { "6.0.5384", "Vista Beta 2" }, - { "6.0.5456", "Vista Pre-RC1 Build 5456" }, - { "6.0.5472", "Vista Pre-RC1 Build 5472" }, - { "6.0.5536", "Vista Pre-RC1 Build 5536" }, - { "6.0.5600.16384", "Vista RC1" }, - { "6.0.5700", "Vista Pre-RC2" }, - { "6.0.5728", "Vista Pre-RC2 Build 5728" }, - { "6.0.5744.16384", "Vista RC2" }, - { "6.0.5808", "Vista Pre-RTM Build 5808" }, - { "6.0.5824", "Vista Pre-RTM Build 5824" }, - { "6.0.5840", "Vista Pre-RTM Build 5840" }, - { "6.0.6000", "Vista" }, - { "6.0.6000.16386", "Vista RTM" }, - { "6.0.6001", "Vista SP1" }, - { "6.0.6002", "Vista SP2" }, - { "6.1.7600", "7" }, - { "6.1.7600.16385", "7" }, - { "6.1.7601", "7 SP1" }, - { "6.1.8400", "Home Server 2011" }, - { "6.2.8102", "8 Developer Preview" }, - { "6.2.9200", "8" }, - { "6.2.9200.16384", "8 RTM" }, - { "6.2.10211", "Phone 8" }, - { "6.3.9600", "8.1" }, - { "6.4.9841", "10 Technical Preview 1" }, - { "6.4.9860", "10 Technical Preview 2" }, - { "6.4.9879", "10 Technical Preview 3" }, - { "10.0.9926", "10 Technical Preview 4" }, - { "10.0.10041", "10 Technical Preview 5" }, - { "10.0.10049", "10 Technical Preview 6" }, - { "10.0.10240", "10 Threshold 1 [1507, RTM]" }, - { "10.0.10586", "10 Threshold 2 [1511, November Update]" }, - { "10.0.14393", "10 Redstone 1 [1607, Anniversary Update]" }, - { "10.0.15063", "10 Redstone 2 [1703, Creators Update]" }, - { "10.0.16299", "10 Redstone 3 [1709, Fall Creators Update]" }, - { "10.0.17134", "10 Redstone 4 [1803, April 2018 Update]" }, - { "10.0.17763", "10 Redstone 5 [1809, October 2018 Update]" }, - { "10.0.18362", "10 19H1 [1903, May 2019 Update]" }, - { "10.0.18363", "10 19H2 [1909, November 2019 Update]" }, - { "10.0.19041", "10 20H1 [2004, May 2020 Update]" }, - { "10.0.19042", "10 20H2 [20H2, October 2020 Update]" }, - { "10.0.19043", "10 21H1 [21H1, May 2021 Update]" }, - { "10.0.19044", "10 21H2 [21H2, November 2021 Update]" }, - { "10.0.19045", "10 22H2 [22H2, 2022 Update]" }, - { "10.0.22000", "11 21H2 [21H2, Sun Valley]" }, - { "10.0.22621", "11 22H2 [22H2, Sun Valley 2]" }, - }; - - private class Windows1XVersion - { - private string? CodeVersion { get; } - private string? CodeName { get; } - private string? MarketingName { get; } - private int BuildNumber { get; } - - private string MarketingNumber => BuildNumber >= 22000 ? "11" : "10"; - private string? ShortifiedCodeName => CodeName?.Replace(" ", ""); - private string? ShortifiedMarketingName => MarketingName?.Replace(" ", ""); - - private Windows1XVersion(string? codeVersion, string? codeName, string? marketingName, int buildNumber) - { - CodeVersion = codeVersion; - CodeName = codeName; - MarketingName = marketingName; - BuildNumber = buildNumber; - } - - private string ToFullVersion(int? ubr = null) - => ubr == null ? $"10.0.{BuildNumber}" : $"10.0.{BuildNumber}.{ubr}"; - - private static string Collapse(params string[] values) => string.Join("/", values.Where(v => !string.IsNullOrEmpty(v))); - - // The line with OsBrandString is one of the longest lines in the summary. - // When people past in on GitHub, it can be a reason of an ugly horizontal scrollbar. - // To avoid this, we are trying to minimize this line and use the minimum possible number of characters. - public string ToPrettifiedString(int? ubr) - => CodeVersion == ShortifiedCodeName - ? $"{MarketingNumber} ({Collapse(ToFullVersion(ubr), CodeVersion, ShortifiedMarketingName)})" - : $"{MarketingNumber} ({Collapse(ToFullVersion(ubr), CodeVersion, ShortifiedMarketingName, ShortifiedCodeName)})"; - - // See https://en.wikipedia.org/wiki/Windows_10_version_history - // See https://en.wikipedia.org/wiki/Windows_11_version_history - private static readonly List WellKnownVersions = new () - { - // Windows 10 - new Windows1XVersion("1507", "Threshold 1", "RTM", 10240), - new Windows1XVersion("1511", "Threshold 2", "November Update", 10586), - new Windows1XVersion("1607", "Redstone 1", "Anniversary Update", 14393), - new Windows1XVersion("1703", "Redstone 2", "Creators Update", 15063), - new Windows1XVersion("1709", "Redstone 3", "Fall Creators Update", 16299), - new Windows1XVersion("1803", "Redstone 4", "April 2018 Update", 17134), - new Windows1XVersion("1809", "Redstone 5", "October 2018 Update", 17763), - new Windows1XVersion("1903", "19H1", "May 2019 Update", 18362), - new Windows1XVersion("1909", "19H2", "November 2019 Update", 18363), - new Windows1XVersion("2004", "20H1", "May 2020 Update", 19041), - new Windows1XVersion("20H2", "20H2", "October 2020 Update", 19042), - new Windows1XVersion("21H1", "21H1", "May 2021 Update", 19043), - new Windows1XVersion("21H2", "21H2", "November 2021 Update", 19044), - new Windows1XVersion("22H2", "22H2", "2022 Update", 19045), - // Windows 11 - new Windows1XVersion("21H2", "Sun Valley", null, 22000), - new Windows1XVersion("22H2", "Sun Valley 2", "2022 Update", 22621), - new Windows1XVersion("23H2", "Sun Valley 3", "2023 Update", 22631), - }; - - public static Windows1XVersion? Resolve(string osVersionString) - { - var windows1XVersion = WellKnownVersions.FirstOrDefault(v => osVersionString == $"10.0.{v.BuildNumber}"); - if (windows1XVersion != null) - return windows1XVersion; - if (Version.TryParse(osVersionString, out var osVersion)) - { - if (osVersion.Major == 10 && osVersion.Minor == 0) - return new Windows1XVersion(null, null, null, osVersion.Build); - } - return null; - } - } - - /// - /// Transform an operation system name and version to a nice form for summary. - /// - /// Original operation system name - /// Original operation system version - /// UBR (Update Build Revision), the revision number of Windows version (if available) - /// Prettified operation system title - public static string Prettify(string osName, string osVersion, int? windowsUbr = null) - { - if (osName == "Windows") - return PrettifyWindows(osVersion, windowsUbr); - return $"{osName} {osVersion}"; - } - - private static string PrettifyWindows(string osVersion, int? windowsUbr) - { - var windows1XVersion = Windows1XVersion.Resolve(osVersion); - if (windows1XVersion != null) - return "Windows " + windows1XVersion.ToPrettifiedString(windowsUbr); - - string brandVersion = WindowsBrandVersions.GetValueOrDefault(osVersion); - string completeOsVersion = windowsUbr != null && osVersion.Count(c => c == '.') == 2 - ? osVersion + "." + windowsUbr - : osVersion; - string fullVersion = brandVersion == null ? osVersion : brandVersion + " (" + completeOsVersion + ")"; - return "Windows " + fullVersion; - } - - private class MacOSXVersion - { - private int DarwinVersion { get; } - private string CodeName { get; } - - private MacOSXVersion(int darwinVersion, string codeName) - { - DarwinVersion = darwinVersion; - CodeName = codeName; - } - - private static readonly List WellKnownVersions = new List - { - new MacOSXVersion(6, "Jaguar"), - new MacOSXVersion(7, "Panther"), - new MacOSXVersion(8, "Tiger"), - new MacOSXVersion(9, "Leopard"), - new MacOSXVersion(10, "Snow Leopard"), - new MacOSXVersion(11, "Lion"), - new MacOSXVersion(12, "Mountain Lion"), - new MacOSXVersion(13, "Mavericks"), - new MacOSXVersion(14, "Yosemite"), - new MacOSXVersion(15, "El Capitan"), - new MacOSXVersion(16, "Sierra"), - new MacOSXVersion(17, "High Sierra"), - new MacOSXVersion(18, "Mojave"), - new MacOSXVersion(19, "Catalina"), - new MacOSXVersion(20, "Big Sur"), - new MacOSXVersion(21, "Monterey"), - new MacOSXVersion(22, "Ventura"), - new MacOSXVersion(23, "Sonoma"), - new MacOSXVersion(24, "Sequoia"), - }; - - public static string? ResolveCodeName(string kernelVersion) - { - if (string.IsNullOrWhiteSpace(kernelVersion)) - return null; - - kernelVersion = kernelVersion.ToLowerInvariant().Trim(); - if (kernelVersion.StartsWith("darwin")) - kernelVersion = kernelVersion.Substring(6).Trim(); - var numbers = kernelVersion.Split('.'); - if (numbers.Length == 0) - return null; - - string majorVersionStr = numbers[0]; - if (int.TryParse(majorVersionStr, out int majorVersion)) - return WellKnownVersions.FirstOrDefault(v => v.DarwinVersion == majorVersion)?.CodeName; - return null; - } - } - - public static string PrettifyMacOSX(string systemVersion, string kernelVersion) - { - string codeName = MacOSXVersion.ResolveCodeName(kernelVersion); - if (codeName != null) - { - int firstDigitIndex = systemVersion.IndexOfAny("0123456789".ToCharArray()); - if (firstDigitIndex == -1) - return $"{systemVersion} {codeName} [{kernelVersion}]"; - - string systemVersionTitle = systemVersion.Substring(0, firstDigitIndex).Trim(); - string systemVersionNumbers = systemVersion.Substring(firstDigitIndex).Trim(); - return $"{systemVersionTitle} {codeName} {systemVersionNumbers} [{kernelVersion}]"; - } - - return $"{systemVersion} [{kernelVersion}]"; - } - } -} diff --git a/src/BenchmarkDotNet/Environments/ProcessorBrandStringHelper.cs b/src/BenchmarkDotNet/Environments/ProcessorBrandStringHelper.cs deleted file mode 100644 index 1f715f9cbe..0000000000 --- a/src/BenchmarkDotNet/Environments/ProcessorBrandStringHelper.cs +++ /dev/null @@ -1,154 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Text.RegularExpressions; -using BenchmarkDotNet.Extensions; -using BenchmarkDotNet.Helpers; -using BenchmarkDotNet.Portability.Cpu; -using Perfolizer.Horology; - -namespace BenchmarkDotNet.Environments; - -public static class ProcessorBrandStringHelper -{ - /// - /// Transform a processor brand string to a nice form for summary. - /// - /// The CPU information - /// Whether to include determined max frequency information - /// Prettified version - public static string Prettify(CpuInfo? cpuInfo, bool includeMaxFrequency = false) - { - string? processorName = cpuInfo?.ProcessorName; - if (processorName == null || processorName.IsBlank()) - return "Unknown processor"; - - // Remove parts which don't provide any useful information for user - processorName = processorName.Replace("@", "").Replace("(R)", "").Replace("(TM)", ""); - - // If we have found physical core(s), we can safely assume we can drop extra info from brand - if (cpuInfo.PhysicalCoreCount is > 0) - processorName = Regex.Replace(processorName, @"(\w+?-Core Processor)", "").Trim(); - - string frequencyString = GetBrandStyledNominalFrequency(cpuInfo.NominalFrequency); - if (includeMaxFrequency && frequencyString != null && !processorName.Contains(frequencyString)) - { - // show Max only if there's already a frequency name to differentiate the two - string maxFrequency = processorName.Contains("Hz") ? $"(Max: {frequencyString})" : frequencyString; - processorName = $"{processorName} {maxFrequency}"; - } - - // Remove double spaces - processorName = Regex.Replace(processorName.Trim(), @"\s+", " "); - - // Add microarchitecture name if known - string microarchitecture = ParseMicroarchitecture(processorName); - if (microarchitecture != null) - processorName = $"{processorName} ({microarchitecture})"; - - return processorName; - } - - /// - /// Presents actual processor's frequency into brand string format - /// - /// - private static string? GetBrandStyledNominalFrequency(Frequency? frequency) - { - if (frequency == null) - return null; - return $"{frequency.Value.ToGHz().ToString("N2", DefaultCultureInfo.Instance)}GHz"; - } - - /// - /// Parse a processor name and tries to return a microarchitecture name. - /// Works only for well-known microarchitectures. - /// - private static string? ParseMicroarchitecture(string processorName) - { - if (processorName.StartsWith("Intel Core")) - { - string model = processorName.Substring("Intel Core".Length).Trim(); - - // Core i3/5/7/9 - if ( - model.Length > 4 && - model[0] == 'i' && - (model[1] == '3' || model[1] == '5' || model[1] == '7' || model[1] == '9') && - (model[2] == '-' || model[2] == ' ')) - { - string modelNumber = model.Substring(3); - if (modelNumber.StartsWith("CPU")) - modelNumber = modelNumber.Substring(3).Trim(); - if (modelNumber.Contains("CPU")) - modelNumber = modelNumber.Substring(0, modelNumber.IndexOf("CPU", StringComparison.Ordinal)).Trim(); - return ParseIntelCoreMicroarchitecture(modelNumber); - } - } - - return null; - } - - private static readonly Lazy> KnownMicroarchitectures = new Lazy>(() => - { - var data = ResourceHelper.LoadResource("BenchmarkDotNet.Environments.microarchitectures.txt").Split('\r', '\n'); - var dictionary = new Dictionary(); - string? currentMicroarchitecture = null; - foreach (string line in data) - { - if (line.StartsWith("//") || string.IsNullOrWhiteSpace(line)) - continue; - if (line.StartsWith("#")) - { - currentMicroarchitecture = line.Substring(1).Trim(); - continue; - } - - string modelNumber = line.Trim(); - if (dictionary.ContainsKey(modelNumber)) - throw new Exception($"{modelNumber} is defined twice in microarchitectures.txt"); - if (currentMicroarchitecture == null) - throw new Exception($"{modelNumber} doesn't have defined microarchitecture in microarchitectures.txt"); - dictionary[modelNumber] = currentMicroarchitecture; - } - - return dictionary; - }); - - // see http://www.intel.com/content/www/us/en/processors/processor-numbers.html - [SuppressMessage("ReSharper", "StringLiteralTypo")] - internal static string? ParseIntelCoreMicroarchitecture(string modelNumber) - { - if (KnownMicroarchitectures.Value.TryGetValue(modelNumber, out string? microarchitecture)) - return microarchitecture; - - if (modelNumber.Length >= 3 && modelNumber.Substring(0, 3).All(char.IsDigit) && - (modelNumber.Length == 3 || !char.IsDigit(modelNumber[3]))) - return "Nehalem"; - if (modelNumber.Length >= 4 && modelNumber.Substring(0, 4).All(char.IsDigit)) - { - char generation = modelNumber[0]; - switch (generation) - { - case '2': - return "Sandy Bridge"; - case '3': - return "Ivy Bridge"; - case '4': - return "Haswell"; - case '5': - return "Broadwell"; - case '6': - return "Skylake"; - case '7': - return "Kaby Lake"; - case '8': - return "Coffee Lake"; - default: - return null; - } - } - return null; - } -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Environments/Runtimes/ClrRuntime.cs b/src/BenchmarkDotNet/Environments/Runtimes/ClrRuntime.cs index be5a84cce2..21bb2821df 100644 --- a/src/BenchmarkDotNet/Environments/Runtimes/ClrRuntime.cs +++ b/src/BenchmarkDotNet/Environments/Runtimes/ClrRuntime.cs @@ -1,4 +1,5 @@ using System; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; @@ -44,7 +45,7 @@ public static ClrRuntime CreateForLocalFullNetFrameworkBuild(string version) internal static ClrRuntime GetCurrentVersion() { - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) { throw new NotSupportedException(".NET Framework supports Windows OS only."); } diff --git a/src/BenchmarkDotNet/Environments/microarchitectures.txt b/src/BenchmarkDotNet/Environments/microarchitectures.txt deleted file mode 100644 index f06d295390..0000000000 --- a/src/BenchmarkDotNet/Environments/microarchitectures.txt +++ /dev/null @@ -1,183 +0,0 @@ -//////////////////////////////////////////////////////////////////////////////// -// Kaby Lake -// See: https://en.wikipedia.org/wiki/Kaby_Lake -//////////////////////////////////////////////////////////////////////////////// - -# Kaby Lake -7Y30 -7Y32 -7Y54 -7Y57 -7Y75 -3865U -3965U -4410Y -4415U -7100 -7100H -7100T -7100U -7101E -7101TE -7130U -7167U -7200U -7260U -7267U -7287U -7300 -7300HQ -7300T -7300U -7320 -7350K -7360U -7400 -7400T -7440HQ -7500 -7500T -7500U -7560U -7567U -7600 -7600K -7600T -7600U -7640X -7660U -7700 -7700HQ -7700K -7700T -7740X -7820HK -7820HQ -7920HQ -8130U -E3-1220 v6 -E3-1225 v6 -E3-1230 v6 -E3-1240 v6 -E3-1245 v6 -E3-1270 v6 -E3-1275 v6 -E3-1280 v6 -E3-1285 v6 -E3-1505L v6 -E3-1505M v6 -E3-1535M v6 -G3930 -G3930T -G3950 -G4560 -G4560T -G4600 -G4600T -G4620 - -# Kaby Lake R -8250U -8350U -8550U -8650U - -# Kaby Lake G -8305G -8705G -8706G -8709G -8809G - -# Amber Lake Y -8100Y -8200Y -8210Y -8500Y - -//////////////////////////////////////////////////////////////////////////////// -// Coffee Lake -// See: https://en.wikipedia.org/wiki/Coffee_Lake -//////////////////////////////////////////////////////////////////////////////// - -# Coffee Lake -610 -2104G -2124 -2124G -2126G -2134 -2136 -2144G -2146G -2174G -2176G -2176M -2186G -2186M -8086K -8100 -8100H -8100T -8109U -8259U -8269U -8300 -8300H -8300T -8350K -8400 -8400B -8400H -8400T -8500 -8500B -8500T -8559U -8600 -8600K -8600T -8700 -8700B -8700K -8700T -8750H -8850H -8950HK -9350KF -9400 -9400F -9600K -9600KF -9700K -9700KF -9900K -9900KF -G4900 -G4900T -G4920 -G5400 -G5400T -G5500 -G5500T -G5600 - -//////////////////////////////////////////////////////////////////////////////// -// Cannon Lake -// See: https://en.wikipedia.org/wiki/Cannon_Lake_(microarchitecture) -//////////////////////////////////////////////////////////////////////////////// - -# Cannon Lake -8121U - -//////////////////////////////////////////////////////////////////////////////// -// Whiskey Lake -// See: https://en.wikipedia.org/wiki/Whiskey_Lake_(microarchitecture) -//////////////////////////////////////////////////////////////////////////////// - -# Whiskey Lake -8565U -8265U -8145U -5405U -4205U \ No newline at end of file diff --git a/src/BenchmarkDotNet/Exporters/Json/JsonExporterBase.cs b/src/BenchmarkDotNet/Exporters/Json/JsonExporterBase.cs index 8ce4472a5a..3727ecac80 100644 --- a/src/BenchmarkDotNet/Exporters/Json/JsonExporterBase.cs +++ b/src/BenchmarkDotNet/Exporters/Json/JsonExporterBase.cs @@ -3,8 +3,9 @@ using BenchmarkDotNet.Environments; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Reports; +using Perfolizer.Helpers; using Perfolizer.Horology; -using JsonSerializer = SimpleJson.SimpleJson; +using SimpleJson; namespace BenchmarkDotNet.Exporters.Json { @@ -23,8 +24,8 @@ protected JsonExporterBase(bool indentJson = false, bool excludeMeasurements = f public override void ExportToLog(Summary summary, ILogger logger) { - JsonSerializer.CurrentJsonSerializerStrategy.Indent = IndentJson; - logger.WriteLine(JsonSerializer.SerializeObject(GetDataToSerialize(summary))); + SimpleJsonSerializer.CurrentJsonSerializerStrategy.Indent = IndentJson; + logger.WriteLine(SimpleJsonSerializer.SerializeObject(GetDataToSerialize(summary))); } protected virtual IReadOnlyDictionary GetDataToSerialize(Summary summary) @@ -47,11 +48,11 @@ protected virtual IReadOnlyDictionary GetDataToSerialize(HostEnv { { nameof(HostEnvironmentInfo.BenchmarkDotNetCaption), HostEnvironmentInfo.BenchmarkDotNetCaption }, { nameof(environmentInfo.BenchmarkDotNetVersion), environmentInfo.BenchmarkDotNetVersion }, - { "OsVersion", environmentInfo.OsVersion.Value }, - { "ProcessorName", ProcessorBrandStringHelper.Prettify(environmentInfo.CpuInfo.Value) }, - { "PhysicalProcessorCount", environmentInfo.CpuInfo.Value?.PhysicalProcessorCount }, - { "PhysicalCoreCount", environmentInfo.CpuInfo.Value?.PhysicalCoreCount }, - { "LogicalCoreCount", environmentInfo.CpuInfo.Value?.LogicalCoreCount }, + { "OsVersion", environmentInfo.Os.Value.ToBrandString() }, + { "ProcessorName", environmentInfo.Cpu.Value.ToShortBrandName() }, + { "PhysicalProcessorCount", environmentInfo.Cpu.Value?.PhysicalProcessorCount }, + { "PhysicalCoreCount", environmentInfo.Cpu.Value?.PhysicalCoreCount }, + { "LogicalCoreCount", environmentInfo.Cpu.Value?.LogicalCoreCount }, { nameof(environmentInfo.RuntimeVersion), environmentInfo.RuntimeVersion }, { nameof(environmentInfo.Architecture), environmentInfo.Architecture }, { nameof(environmentInfo.HasAttachedDebugger), environmentInfo.HasAttachedDebugger }, @@ -83,40 +84,40 @@ protected virtual IReadOnlyDictionary GetDataToSerialize(Benchma { "Statistics", report.ResultStatistics } }; - // We show MemoryDiagnoser's results only if it is being used - if (report.BenchmarkCase.Config.HasMemoryDiagnoser()) + // We show MemoryDiagnoser's results only if it is being used + if (report.BenchmarkCase.Config.HasMemoryDiagnoser()) + { + benchmark.Add("Memory", new { - benchmark.Add("Memory", new + report.GcStats.Gen0Collections, + report.GcStats.Gen1Collections, + report.GcStats.Gen2Collections, + report.GcStats.TotalOperations, + BytesAllocatedPerOperation = report.GcStats.GetBytesAllocatedPerOperation(report.BenchmarkCase) + }); + } + + if (ExcludeMeasurements == false) + { + // We construct Measurements manually, so that we can have the IterationMode enum as text, rather than an integer + benchmark.Add("Measurements", + report.AllMeasurements.Select(m => new { - report.GcStats.Gen0Collections, - report.GcStats.Gen1Collections, - report.GcStats.Gen2Collections, - report.GcStats.TotalOperations, - BytesAllocatedPerOperation = report.GcStats.GetBytesAllocatedPerOperation(report.BenchmarkCase) - }); - } + IterationMode = m.IterationMode.ToString(), + IterationStage = m.IterationStage.ToString(), + m.LaunchIndex, + m.IterationIndex, + m.Operations, + m.Nanoseconds + })); - if (ExcludeMeasurements == false) + if (report.Metrics.Any()) { - // We construct Measurements manually, so that we can have the IterationMode enum as text, rather than an integer - benchmark.Add("Measurements", - report.AllMeasurements.Select(m => new - { - IterationMode = m.IterationMode.ToString(), - IterationStage = m.IterationStage.ToString(), - m.LaunchIndex, - m.IterationIndex, - m.Operations, - m.Nanoseconds - })); - - if (report.Metrics.Any()) - { - benchmark.Add("Metrics", report.Metrics.Values); - } + benchmark.Add("Metrics", report.Metrics.Values); } + } - return benchmark; + return benchmark; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Exporters/Json/SimpleJson.cs b/src/BenchmarkDotNet/Exporters/Json/SimpleJsonSerializer.cs similarity index 99% rename from src/BenchmarkDotNet/Exporters/Json/SimpleJson.cs rename to src/BenchmarkDotNet/Exporters/Json/SimpleJsonSerializer.cs index 5670d64588..e461c8a5c6 100644 --- a/src/BenchmarkDotNet/Exporters/Json/SimpleJson.cs +++ b/src/BenchmarkDotNet/Exporters/Json/SimpleJsonSerializer.cs @@ -105,7 +105,7 @@ public JsonArray(int capacity) : base(capacity) { } /// The json representation of the array. public override string ToString() { - return SimpleJson.SerializeObject(this) ?? string.Empty; + return SimpleJsonSerializer.SerializeObject(this) ?? string.Empty; } } @@ -344,7 +344,7 @@ IEnumerator IEnumerable.GetEnumerator() /// public override string ToString() { - return SimpleJson.SerializeObject(this); + return SimpleJsonSerializer.SerializeObject(this); } #if SIMPLE_JSON_DYNAMIC @@ -501,7 +501,7 @@ namespace SimpleJson #else public #endif - static class SimpleJson + static class SimpleJsonSerializer { private const int TOKEN_NONE = 0; private const int TOKEN_CURLY_OPEN = 1; @@ -522,7 +522,7 @@ static class SimpleJson private static readonly char[] EscapeCharacters = new char[] { '"', '\\', '\b', '\f', '\n', '\r', '\t' }; private static readonly string EscapeCharactersString = new string(EscapeCharacters); - static SimpleJson() + static SimpleJsonSerializer() { EscapeTable = new char[93]; EscapeTable['"'] = '"'; diff --git a/src/BenchmarkDotNet/Exporters/PhdJsonExporter.cs b/src/BenchmarkDotNet/Exporters/PhdJsonExporter.cs new file mode 100644 index 0000000000..4cc8b489ff --- /dev/null +++ b/src/BenchmarkDotNet/Exporters/PhdJsonExporter.cs @@ -0,0 +1,15 @@ +using BenchmarkDotNet.Loggers; +using BenchmarkDotNet.Reports; +using Perfolizer.Json; + +namespace BenchmarkDotNet.Exporters; + +public class PhdJsonExporter(LightJsonSettings? jsonSettings = null) : ExporterBase +{ + protected override string FileExtension => "phd.json"; + + public override void ExportToLog(Summary summary, ILogger logger) + { + logger.WriteLine(LightJsonSerializer.Serialize(summary.ToPhd(), jsonSettings)); + } +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Exporters/RPlotExporter.cs b/src/BenchmarkDotNet/Exporters/RPlotExporter.cs index 5c23f3b598..c90338f490 100644 --- a/src/BenchmarkDotNet/Exporters/RPlotExporter.cs +++ b/src/BenchmarkDotNet/Exporters/RPlotExporter.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Exporters.Csv; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Loggers; @@ -82,7 +83,7 @@ public void ExportToLog(Summary summary, ILogger logger) private static bool TryFindRScript(ILogger consoleLogger, out string? rscriptPath) { - string rscriptExecutable = RuntimeInformation.IsWindows() ? "Rscript.exe" : "Rscript"; + string rscriptExecutable = OsDetector.IsWindows() ? "Rscript.exe" : "Rscript"; rscriptPath = null; string rHome = Environment.GetEnvironmentVariable("R_HOME"); @@ -101,7 +102,7 @@ private static bool TryFindRScript(ILogger consoleLogger, out string? rscriptPat if (rscriptPath != null) return true; - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) { string programFiles = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles); string programFilesR = Path.Combine(programFiles, "R"); diff --git a/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs b/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs index 79f8e51f1e..3087250b52 100644 --- a/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs +++ b/src/BenchmarkDotNet/Exporters/Xml/SummaryDto.cs @@ -4,6 +4,7 @@ using BenchmarkDotNet.Mathematics; using BenchmarkDotNet.Reports; using JetBrains.Annotations; +using Perfolizer.Helpers; using Perfolizer.Horology; // ReSharper disable UnusedMember.Global @@ -34,11 +35,11 @@ internal class HostEnvironmentInfoDto { public string BenchmarkDotNetCaption => HostEnvironmentInfo.BenchmarkDotNetCaption; public string BenchmarkDotNetVersion => hei.BenchmarkDotNetVersion; - public string OsVersion => hei.OsVersion.Value; - public string ProcessorName => ProcessorBrandStringHelper.Prettify(hei.CpuInfo.Value); - public string PhysicalProcessorCount => hei.CpuInfo.Value?.PhysicalProcessorCount?.ToString(); - public string PhysicalCoreCount => hei.CpuInfo.Value?.PhysicalCoreCount?.ToString(); - public string LogicalCoreCount => hei.CpuInfo.Value?.LogicalCoreCount?.ToString(); + public string OsVersion => hei.Os.Value.ToBrandString(); + public string ProcessorName => hei.Cpu.Value.ToShortBrandName(); + public string PhysicalProcessorCount => hei.Cpu.Value?.PhysicalProcessorCount?.ToString(); + public string PhysicalCoreCount => hei.Cpu.Value?.PhysicalCoreCount?.ToString(); + public string LogicalCoreCount => hei.Cpu.Value?.LogicalCoreCount?.ToString(); public string RuntimeVersion => hei.RuntimeVersion; public string Architecture => hei.Architecture; public bool HasAttachedDebugger => hei.HasAttachedDebugger; @@ -72,6 +73,7 @@ internal class BenchmarkReportDto public string Parameters => report.BenchmarkCase.Parameters.PrintInfo; public Statistics Statistics => report.ResultStatistics; public IEnumerable Metrics => report.Metrics.Values; + public GcStats Memory => new GcStats() { Gen0Collections = report.GcStats.Gen0Collections, @@ -80,6 +82,7 @@ internal class BenchmarkReportDto TotalOperations = report.GcStats.TotalOperations, BytesAllocatedPerOperation = report.GcStats.GetBytesAllocatedPerOperation(report.BenchmarkCase) }; + [PublicAPI] public IEnumerable Measurements { get; } private readonly BenchmarkReport report; @@ -105,4 +108,4 @@ internal struct GcStats public long TotalOperations { get; set; } public long? BytesAllocatedPerOperation { get; set; } } -} +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Extensions/MathExtensions.cs b/src/BenchmarkDotNet/Extensions/MathExtensions.cs new file mode 100644 index 0000000000..86a17f93f5 --- /dev/null +++ b/src/BenchmarkDotNet/Extensions/MathExtensions.cs @@ -0,0 +1,9 @@ +using System; + +namespace BenchmarkDotNet.Extensions; + +internal static class MathExtensions +{ + public static int RoundToInt(this double x) => (int)Math.Round(x); + public static long RoundToLong(this double x) => (long)Math.Round(x); +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Extensions/ProcessExtensions.cs b/src/BenchmarkDotNet/Extensions/ProcessExtensions.cs index 912babeb39..dd6bb5b55b 100644 --- a/src/BenchmarkDotNet/Extensions/ProcessExtensions.cs +++ b/src/BenchmarkDotNet/Extensions/ProcessExtensions.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.IO; using BenchmarkDotNet.Characteristics; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Jobs; @@ -86,7 +87,7 @@ public static bool TrySetAffinity( if (logger == null) throw new ArgumentNullException(nameof(logger)); - if (!RuntimeInformation.IsWindows() && !RuntimeInformation.IsLinux()) + if (!OsDetector.IsWindows() && !OsDetector.IsLinux()) return false; try @@ -108,7 +109,7 @@ public static bool TrySetAffinity( if (process == null) throw new ArgumentNullException(nameof(process)); - if (!RuntimeInformation.IsWindows() && !RuntimeInformation.IsLinux()) + if (!OsDetector.IsWindows() && !OsDetector.IsLinux()) return null; try @@ -163,7 +164,7 @@ internal static void SetEnvironmentVariables(this ProcessStartInfo start, Benchm public static void KillTree(this Process process, TimeSpan timeout) { - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) { RunProcessAndIgnoreOutput("taskkill", $"/T /F /PID {process.Id}", timeout); } diff --git a/src/BenchmarkDotNet/Helpers/ArtifactFileNameHelper.cs b/src/BenchmarkDotNet/Helpers/ArtifactFileNameHelper.cs index 62b4d31d94..b85f9fd297 100644 --- a/src/BenchmarkDotNet/Helpers/ArtifactFileNameHelper.cs +++ b/src/BenchmarkDotNet/Helpers/ArtifactFileNameHelper.cs @@ -1,6 +1,7 @@ using System; using System.IO; using System.Linq; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Extensions; @@ -26,7 +27,7 @@ internal static string GetFilePath(DiagnoserActionParameters details, string? su // long paths can be enabled on Windows but it does not mean that everything is going to work fine.. // so we always use 260 as limit on Windows - int limit = RuntimeInformation.IsWindows() + int limit = OsDetector.IsWindows() ? WindowsOldPathLimit - reserve : CommonSenseLimit; diff --git a/src/BenchmarkDotNet/Helpers/ExternalToolsHelper.cs b/src/BenchmarkDotNet/Helpers/ExternalToolsHelper.cs index 3802608047..bd5274c6b3 100644 --- a/src/BenchmarkDotNet/Helpers/ExternalToolsHelper.cs +++ b/src/BenchmarkDotNet/Helpers/ExternalToolsHelper.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; namespace BenchmarkDotNet.Helpers @@ -11,7 +12,7 @@ public static class ExternalToolsHelper /// MacOSX only. /// public static readonly Lazy> MacSystemProfilerData = - LazyParse(RuntimeInformation.IsMacOS, "system_profiler", "SPSoftwareDataType", s => SectionsHelper.ParseSection(s, ':')); + LazyParse(OsDetector.IsMacOS, "system_profiler", "SPSoftwareDataType", s => SectionsHelper.ParseSection(s, ':')); private static Lazy LazyParse(Func isAvailable, string fileName, string arguments, Func parseFunc) { diff --git a/src/BenchmarkDotNet/Helpers/TaskbarProgress.cs b/src/BenchmarkDotNet/Helpers/TaskbarProgress.cs index f66e21cdf6..94afb75311 100644 --- a/src/BenchmarkDotNet/Helpers/TaskbarProgress.cs +++ b/src/BenchmarkDotNet/Helpers/TaskbarProgress.cs @@ -1,5 +1,6 @@ using System; using System.Runtime.InteropServices; +using BenchmarkDotNet.Detectors; namespace BenchmarkDotNet.Helpers { @@ -15,7 +16,7 @@ internal enum TaskbarProgressState internal class TaskbarProgress : IDisposable { - private static readonly bool OsVersionIsSupported = Portability.RuntimeInformation.IsWindows() + private static readonly bool OsVersionIsSupported = OsDetector.IsWindows() // Must be windows 7 or greater && Environment.OSVersion.Version >= new Version(6, 1); diff --git a/src/BenchmarkDotNet/Helpers/UserInteractionHelper.cs b/src/BenchmarkDotNet/Helpers/UserInteractionHelper.cs index 7951d168dd..73e83d6ada 100644 --- a/src/BenchmarkDotNet/Helpers/UserInteractionHelper.cs +++ b/src/BenchmarkDotNet/Helpers/UserInteractionHelper.cs @@ -1,3 +1,4 @@ +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; namespace BenchmarkDotNet.Helpers @@ -19,7 +20,7 @@ internal static class UserInteractionHelper /// public static string EscapeCommandExample(string input) { - return !RuntimeInformation.IsWindows() && input.IndexOf('*') >= 0 ? $"'{input}'" : input; + return !OsDetector.IsWindows() && input.IndexOf('*') >= 0 ? $"'{input}'" : input; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Jobs/EnvironmentMode.cs b/src/BenchmarkDotNet/Jobs/EnvironmentMode.cs index 8fe04e5764..3ece10e9c8 100644 --- a/src/BenchmarkDotNet/Jobs/EnvironmentMode.cs +++ b/src/BenchmarkDotNet/Jobs/EnvironmentMode.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using BenchmarkDotNet.Characteristics; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Portability; using JetBrains.Annotations; @@ -107,7 +108,7 @@ public bool LargeAddressAware get => LargeAddressAwareCharacteristic[this]; set { - if (value && !RuntimeInformation.IsWindows()) + if (value && !OsDetector.IsWindows()) { throw new NotSupportedException("LargeAddressAware is a Windows-specific concept."); } diff --git a/src/BenchmarkDotNet/Loggers/ConsoleLogger.cs b/src/BenchmarkDotNet/Loggers/ConsoleLogger.cs index 20aa2f7a54..d201f5da75 100644 --- a/src/BenchmarkDotNet/Loggers/ConsoleLogger.cs +++ b/src/BenchmarkDotNet/Loggers/ConsoleLogger.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Portability; using JetBrains.Annotations; @@ -15,7 +16,7 @@ public sealed class ConsoleLogger : ILogger public static readonly ILogger Ascii = new ConsoleLogger(false); public static readonly ILogger Unicode = new ConsoleLogger(true); private static readonly bool ConsoleSupportsColors - = !(RuntimeInformation.IsAndroid() || RuntimeInformation.IsIOS() || RuntimeInformation.IsWasm || RuntimeInformation.IsTvOS()); + = !(OsDetector.IsAndroid() || OsDetector.IsIOS() || RuntimeInformation.IsWasm || OsDetector.IsTvOS()); private readonly bool unicodeSupport; private readonly Dictionary colorScheme; diff --git a/src/BenchmarkDotNet/Phd/BdnBenchmark.cs b/src/BenchmarkDotNet/Phd/BdnBenchmark.cs new file mode 100644 index 0000000000..ab4172db76 --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnBenchmark.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Phd; + +[PublicAPI] +public class BdnBenchmark : PhdBenchmark +{ + public string DisplayInfo { get; set; } = ""; + public string Namespace { get; set; } = ""; + public string Type { get; set; } = ""; + public string Method { get; set; } = ""; + public string MethodTitle { get; set; } = ""; + public string Parameters { get; set; } = ""; + public string FullName { get; set; } = ""; + public string? HardwareIntrinsics { get; set; } = ""; +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Phd/BdnEnvironment.cs b/src/BenchmarkDotNet/Phd/BdnEnvironment.cs new file mode 100644 index 0000000000..c250c9faeb --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnEnvironment.cs @@ -0,0 +1,12 @@ +using BenchmarkDotNet.Environments; +using BenchmarkDotNet.Jobs; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Phd; + +public class BdnEnvironment : PhdEnvironment +{ + public RuntimeMoniker? Runtime { get; set; } + public Jit? Jit { get; set; } + public int? Affinity { get; set; } +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Phd/BdnHost.cs b/src/BenchmarkDotNet/Phd/BdnHost.cs new file mode 100644 index 0000000000..3c66d3f5d2 --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnHost.cs @@ -0,0 +1,17 @@ +using JetBrains.Annotations; +using Perfolizer.Phd; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Phd; + +[PublicAPI] +public class BdnHost : PhdHost +{ + public string RuntimeVersion { get; set; } = ""; + public bool HasAttachedDebugger { get; set; } + public bool HasRyuJit { get; set; } + public string Configuration { get; set; } = ""; + public string DotNetSdkVersion { get; set; } = ""; + public double ChronometerFrequency { get; set; } + public string HardwareTimerKind { get; set; } = ""; +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Phd/BdnInfo.cs b/src/BenchmarkDotNet/Phd/BdnInfo.cs new file mode 100644 index 0000000000..85c5956392 --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnInfo.cs @@ -0,0 +1,11 @@ +using JetBrains.Annotations; +using Perfolizer.Phd; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Phd; + +[PublicAPI] +public class BdnInfo : PhdInfo +{ + +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Phd/BdnLifecycle.cs b/src/BenchmarkDotNet/Phd/BdnLifecycle.cs new file mode 100644 index 0000000000..dafc65a880 --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnLifecycle.cs @@ -0,0 +1,57 @@ +using System; +using BenchmarkDotNet.Engines; +using JetBrains.Annotations; +using Perfolizer.Phd; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Phd; + +[PublicAPI] +public class BdnLifecycle : PhdLifecycle, IEquatable, IComparable +{ + public int LaunchIndex { get; set; } + public IterationStage IterationStage { get; set; } = IterationStage.Unknown; + public IterationMode IterationMode { get; set; } = IterationMode.Unknown; + + public bool Equals(BdnLifecycle? other) + { + if (ReferenceEquals(null, other)) + return false; + if (ReferenceEquals(this, other)) + return true; + return LaunchIndex == other.LaunchIndex && + IterationMode == other.IterationMode && + IterationStage == other.IterationStage; + } + + public override bool Equals(object? obj) + { + if (ReferenceEquals(null, obj)) + return false; + if (ReferenceEquals(this, obj)) + return true; + if (obj.GetType() != GetType()) + return false; + return Equals((BdnLifecycle)obj); + } + + public override int GetHashCode() => HashCode.Combine(LaunchIndex, IterationMode, IterationStage); + + public static bool operator ==(BdnLifecycle? left, BdnLifecycle? right) => Equals(left, right); + public static bool operator !=(BdnLifecycle? left, BdnLifecycle? right) => !Equals(left, right); + + public int CompareTo(BdnLifecycle? other) + { + if (ReferenceEquals(this, other)) + return 0; + if (ReferenceEquals(null, other)) + return 1; + int launchIndexComparison = LaunchIndex.CompareTo(other.LaunchIndex); + if (launchIndexComparison != 0) + return launchIndexComparison; + int iterationStageComparison = IterationStage.CompareTo(other.IterationStage); + if (iterationStageComparison != 0) + return iterationStageComparison; + return IterationMode.CompareTo(other.IterationMode); + } +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Phd/BdnSchema.cs b/src/BenchmarkDotNet/Phd/BdnSchema.cs new file mode 100644 index 0000000000..9ef7374e0b --- /dev/null +++ b/src/BenchmarkDotNet/Phd/BdnSchema.cs @@ -0,0 +1,17 @@ +using Perfolizer.Phd; +using Perfolizer.Phd.Base; + +namespace BenchmarkDotNet.Phd; + +public class BdnSchema : PhdSchema +{ + public static readonly BdnSchema Instance = new (); + + private BdnSchema() : base("bdn") + { + Add(); + Add(); + Add(); + Add(); + } +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/CompositeCpuInfoDetector.cs b/src/BenchmarkDotNet/Portability/Cpu/CompositeCpuInfoDetector.cs deleted file mode 100644 index d6919d938f..0000000000 --- a/src/BenchmarkDotNet/Portability/Cpu/CompositeCpuInfoDetector.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Linq; -using BenchmarkDotNet.Extensions; -using BenchmarkDotNet.Portability.Cpu.Linux; -using BenchmarkDotNet.Portability.Cpu.macOS; -using BenchmarkDotNet.Portability.Cpu.Windows; - -namespace BenchmarkDotNet.Portability.Cpu; - -internal class CompositeCpuInfoDetector(params ICpuInfoDetector[] detectors) : ICpuInfoDetector -{ - public bool IsApplicable() => detectors.Any(loader => loader.IsApplicable()); - - public CpuInfo? Detect() => detectors - .Where(loader => loader.IsApplicable()) - .Select(loader => loader.Detect()) - .WhereNotNull() - .FirstOrDefault(); -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/CpuInfo.cs b/src/BenchmarkDotNet/Portability/Cpu/CpuInfo.cs deleted file mode 100644 index ee7cf310c7..0000000000 --- a/src/BenchmarkDotNet/Portability/Cpu/CpuInfo.cs +++ /dev/null @@ -1,33 +0,0 @@ -using BenchmarkDotNet.Portability.Cpu.Linux; -using BenchmarkDotNet.Portability.Cpu.macOS; -using BenchmarkDotNet.Portability.Cpu.Windows; -using Perfolizer.Horology; - -namespace BenchmarkDotNet.Portability.Cpu; - -public class CpuInfo( - string? processorName, - int? physicalProcessorCount, - int? physicalCoreCount, - int? logicalCoreCount, - Frequency? nominalFrequency, - Frequency? maxFrequency = null) -{ - public static readonly CpuInfo Empty = new (null, null, null, null, null, null); - public static CpuInfo FromName(string processorName) => new (processorName, null, null, null, null); - public static CpuInfo FromNameAndFrequency(string processorName, Frequency nominalFrequency) => new (processorName, null, null, null, nominalFrequency); - - private static readonly CompositeCpuInfoDetector Detector = new ( - new WindowsCpuInfoDetector(), - new LinuxCpuInfoDetector(), - new MacOsCpuInfoDetector()); - - public static CpuInfo? DetectCurrent() => Detector.Detect(); - - public string? ProcessorName { get; } = processorName; - public int? PhysicalProcessorCount { get; } = physicalProcessorCount; - public int? PhysicalCoreCount { get; } = physicalCoreCount; - public int? LogicalCoreCount { get; } = logicalCoreCount; - public Frequency? NominalFrequency { get; } = nominalFrequency ?? maxFrequency; - public Frequency? MaxFrequency { get; } = maxFrequency ?? nominalFrequency; -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/CpuInfoFormatter.cs b/src/BenchmarkDotNet/Portability/Cpu/CpuInfoFormatter.cs deleted file mode 100644 index 88301271e4..0000000000 --- a/src/BenchmarkDotNet/Portability/Cpu/CpuInfoFormatter.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Collections.Generic; -using BenchmarkDotNet.Environments; - -namespace BenchmarkDotNet.Portability.Cpu; - -public static class CpuInfoFormatter -{ - public static string Format(CpuInfo? cpuInfo) - { - if (cpuInfo == null) - return "Unknown processor"; - - var parts = new List - { - ProcessorBrandStringHelper.Prettify(cpuInfo, includeMaxFrequency: true) - }; - - if (cpuInfo.PhysicalProcessorCount > 0) - parts.Add($", {cpuInfo.PhysicalProcessorCount} CPU"); - - switch (cpuInfo.LogicalCoreCount) - { - case 1: - parts.Add(", 1 logical core"); - break; - case > 1: - parts.Add($", {cpuInfo.LogicalCoreCount} logical cores"); - break; - } - - if (cpuInfo.LogicalCoreCount > 0 && cpuInfo.PhysicalCoreCount > 0) - parts.Add(" and "); - else if (cpuInfo.PhysicalCoreCount > 0) - parts.Add(", "); - - switch (cpuInfo.PhysicalCoreCount) - { - case 1: - parts.Add("1 physical core"); - break; - case > 1: - parts.Add($"{cpuInfo.PhysicalCoreCount} physical cores"); - break; - } - - string result = string.Join("", parts); - // The line with ProcessorBrandString is one of the longest lines in the summary. - // When people past in on GitHub, it can be a reason of an ugly horizontal scrollbar. - // To avoid this, we are trying to minimize this line and use the minimum possible number of characters. - // Here we are removing the repetitive "cores" word. - if (result.Contains("logical cores") && result.Contains("physical cores")) - result = result.Replace("logical cores", "logical"); - - return result; - } -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/ICpuInfoDetector.cs b/src/BenchmarkDotNet/Portability/Cpu/ICpuInfoDetector.cs deleted file mode 100644 index 748f9ce186..0000000000 --- a/src/BenchmarkDotNet/Portability/Cpu/ICpuInfoDetector.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace BenchmarkDotNet.Portability.Cpu; - -/// -/// Loads the for the current hardware -/// -internal interface ICpuInfoDetector -{ - bool IsApplicable(); - CpuInfo? Detect(); -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/Cpu/Windows/WindowsCpuInfoDetector.cs b/src/BenchmarkDotNet/Portability/Cpu/Windows/WindowsCpuInfoDetector.cs deleted file mode 100644 index 9846c8b12a..0000000000 --- a/src/BenchmarkDotNet/Portability/Cpu/Windows/WindowsCpuInfoDetector.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace BenchmarkDotNet.Portability.Cpu.Windows; - -internal class WindowsCpuInfoDetector() : CompositeCpuInfoDetector(new MosCpuInfoDetector(), new WmicCpuInfoDetector()); \ No newline at end of file diff --git a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs index 95a3874d87..ed4d457caa 100644 --- a/src/BenchmarkDotNet/Portability/RuntimeInformation.cs +++ b/src/BenchmarkDotNet/Portability/RuntimeInformation.cs @@ -8,15 +8,16 @@ using System.Reflection; using System.Runtime.InteropServices; using System.Text.RegularExpressions; +using BenchmarkDotNet.Detectors; +using BenchmarkDotNet.Detectors.Cpu; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; -using BenchmarkDotNet.Portability.Cpu; -using BenchmarkDotNet.Portability.Cpu.Linux; -using BenchmarkDotNet.Portability.Cpu.macOS; -using BenchmarkDotNet.Portability.Cpu.Windows; using JetBrains.Annotations; using Microsoft.Win32; +using Perfolizer.Helpers; +using Perfolizer.Phd; +using Perfolizer.Phd.Dto; using static System.Runtime.InteropServices.RuntimeInformation; using RuntimeEnvironment = Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment; @@ -31,7 +32,8 @@ internal static class RuntimeInformation /// /// returns true for both the old (implementation of .NET Framework) and new Mono (.NET 6+ flavour) /// - public static bool IsMono { get; } = Type.GetType("Mono.RuntimeStructs") != null; // it allocates a lot of memory, we need to check it once in order to keep Engine non-allocating! + public static bool IsMono { get; } = + Type.GetType("Mono.RuntimeStructs") != null; // it allocates a lot of memory, we need to check it once in order to keep Engine non-allocating! public static bool IsOldMono { get; } = Type.GetType("Mono.Runtime") != null; @@ -49,12 +51,12 @@ internal static class RuntimeInformation public static bool IsNetCore => ((Environment.Version.Major >= 5) || FrameworkDescription.StartsWith(".NET Core", StringComparison.OrdinalIgnoreCase)) - && !string.IsNullOrEmpty(typeof(object).Assembly.Location); + && !string.IsNullOrEmpty(typeof(object).Assembly.Location); public static bool IsNativeAOT => Environment.Version.Major >= 5 - && string.IsNullOrEmpty(typeof(object).Assembly.Location) // it's merged to a single .exe and .Location returns null - && !IsWasm; // Wasm also returns "" for assembly locations + && string.IsNullOrEmpty(typeof(object).Assembly.Location) // it's merged to a single .exe and .Location returns null + && !IsWasm; // Wasm also returns "" for assembly locations #if NET6_0_OR_GREATER [System.Runtime.Versioning.SupportedOSPlatformGuard("browser")] @@ -90,160 +92,9 @@ private static bool IsAotMethod() public static bool IsRunningInContainer => string.Equals(Environment.GetEnvironmentVariable("DOTNET_RUNNING_IN_CONTAINER"), "true"); - internal static string ExecutableExtension => IsWindows() ? ".exe" : string.Empty; - - internal static string ScriptFileExtension => IsWindows() ? ".bat" : ".sh"; internal static string GetArchitecture() => GetCurrentPlatform().ToString(); -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("windows")] -#endif - internal static bool IsWindows() => -#if NET6_0_OR_GREATER - OperatingSystem.IsWindows(); // prefer linker-friendly OperatingSystem APIs -#else - IsOSPlatform(OSPlatform.Windows); -#endif - -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("linux")] -#endif - internal static bool IsLinux() => -#if NET6_0_OR_GREATER - OperatingSystem.IsLinux(); -#else - IsOSPlatform(OSPlatform.Linux); -#endif - -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("macos")] -#endif - internal static bool IsMacOS() => -#if NET6_0_OR_GREATER - OperatingSystem.IsMacOS(); -#else - IsOSPlatform(OSPlatform.OSX); -#endif - -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("android")] -#endif - internal static bool IsAndroid() => -#if NET6_0_OR_GREATER - OperatingSystem.IsAndroid(); -#else - Type.GetType("Java.Lang.Object, Mono.Android") != null; -#endif - -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("ios")] -#endif - internal static bool IsIOS() => -#if NET6_0_OR_GREATER - OperatingSystem.IsIOS(); -#else - Type.GetType("Foundation.NSObject, Xamarin.iOS") != null; -#endif - -#if NET6_0_OR_GREATER - [System.Runtime.Versioning.SupportedOSPlatformGuard("tvos")] -#endif - internal static bool IsTvOS() => -#if NET6_0_OR_GREATER - OperatingSystem.IsTvOS(); -#else - IsOSPlatform(OSPlatform.Create("TVOS")); -#endif - - public static string GetOsVersion() - { - if (IsMacOS()) - { - string systemVersion = ExternalToolsHelper.MacSystemProfilerData.Value.GetValueOrDefault("System Version") ?? ""; - string kernelVersion = ExternalToolsHelper.MacSystemProfilerData.Value.GetValueOrDefault("Kernel Version") ?? ""; - if (!string.IsNullOrEmpty(systemVersion) && !string.IsNullOrEmpty(kernelVersion)) - return OsBrandStringHelper.PrettifyMacOSX(systemVersion, kernelVersion); - } - - if (IsLinux()) - { - string? version = GetLinuxOsVersion(); - if (version != null && version.Trim() != "") - return version; - } - - string operatingSystem = RuntimeEnvironment.OperatingSystem; - string operatingSystemVersion = RuntimeEnvironment.OperatingSystemVersion; - - return OsBrandStringHelper.Prettify( - operatingSystem, - operatingSystemVersion, - GetWindowsUbr()); - } - - private static string? GetLinuxOsVersion() - { - if (!IsLinux()) - return null; - try - { - string version = LinuxOsReleaseHelper.GetNameByOsRelease(File.ReadAllLines("/etc/os-release")); - bool wsl = IsUnderWsl(); - return wsl ? version + " WSL" : version; - } - catch (Exception) - { - return null; - } - } - - private static bool IsUnderWsl() - { - if (!IsLinux()) - return false; - try - { - return File.Exists("/proc/sys/fs/binfmt_misc/WSLInterop"); // https://superuser.com/a/1749811 - } - catch (Exception) - { - return false; - } - } - - // TODO: Introduce a common util API for registry calls, use it also in BenchmarkDotNet.Toolchains.CsProj.GetCurrentVersionBasedOnWindowsRegistry - /// - /// On Windows, this method returns UBR (Update Build Revision) based on Registry. - /// Returns null if the value is not available - /// - /// - private static int? GetWindowsUbr() - { - if (IsWindows()) - { - try - { - using (var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)) - using (var ndpKey = baseKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion")) - { - if (ndpKey == null) - return null; - - return Convert.ToInt32(ndpKey.GetValue("UBR")); - } - } - catch (Exception) - { - return null; - } - } - return null; - } - - private static readonly Lazy LazyCpuInfo = new (CpuInfo.DetectCurrent); - internal static CpuInfo? GetCpuInfo() => LazyCpuInfo.Value; - internal static string GetRuntimeVersion() { if (IsWasm) @@ -307,7 +158,7 @@ internal static string GetRuntimeVersion() private static string GetNetCoreVersion() { - if (IsAndroid()) + if (OsDetector.IsAndroid()) { return $".NET {Environment.Version}"; } @@ -415,7 +266,7 @@ internal static string GetJitInfo() if (IsNetCore || HasRyuJit()) // CoreCLR supports only RyuJIT return "RyuJIT"; if (IsFullFramework) - return "LegacyJIT"; + return "LegacyJIT"; return Unknown; } @@ -468,7 +319,7 @@ public JitModule(string name, string version) internal static ICollection GetAntivirusProducts() { var products = new List(); - if (IsWindows()) + if (OsDetector.IsWindows()) { try { @@ -476,7 +327,7 @@ internal static ICollection GetAntivirusProducts() using (var data = wmi.Get()) foreach (var o in data) { - var av = (ManagementObject) o; + var av = (ManagementObject)o; if (av != null) { string name = av["displayName"].ToString(); @@ -494,11 +345,11 @@ internal static ICollection GetAntivirusProducts() return products; } - internal static VirtualMachineHypervisor GetVirtualMachineHypervisor() + internal static VirtualMachineHypervisor? GetVirtualMachineHypervisor() { - VirtualMachineHypervisor[] hypervisors = { HyperV.Default, VirtualBox.Default, VMware.Default }; + VirtualMachineHypervisor[] hypervisors = [HyperV.Default, VirtualBox.Default, VMware.Default]; - if (IsWindows()) + if (OsDetector.IsWindows()) { try { @@ -524,4 +375,4 @@ internal static VirtualMachineHypervisor GetVirtualMachineHypervisor() return null; } } -} +} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Properties/BenchmarkDotNetInfo.cs b/src/BenchmarkDotNet/Properties/BenchmarkDotNetInfo.cs index fcb01a0055..1aa587fd05 100644 --- a/src/BenchmarkDotNet/Properties/BenchmarkDotNetInfo.cs +++ b/src/BenchmarkDotNet/Properties/BenchmarkDotNetInfo.cs @@ -1,11 +1,15 @@ using System; using System.Reflection; using BenchmarkDotNet.Extensions; +using BenchmarkDotNet.Phd; +using Perfolizer.Phd.Dto; namespace BenchmarkDotNet.Properties { public class BenchmarkDotNetInfo { + public const string BenchmarkDotNetCaption = "BenchmarkDotNet"; + private static readonly Lazy LazyInstance = new (() => { var assembly = typeof(BenchmarkDotNetInfo).GetTypeInfo().Assembly; @@ -16,6 +20,12 @@ public class BenchmarkDotNetInfo public static BenchmarkDotNetInfo Instance { get; } = LazyInstance.Value; + public PhdEngine GetBdnEngine() => new PhdEngine + { + Name = BenchmarkDotNetCaption, + Version = BrandVersion + }.SetDisplay(); + public Version AssemblyVersion { get; } public string FullVersion { get; } diff --git a/src/BenchmarkDotNet/Reports/BenchmarkReport.cs b/src/BenchmarkDotNet/Reports/BenchmarkReport.cs index 744793c063..efaeee3e72 100644 --- a/src/BenchmarkDotNet/Reports/BenchmarkReport.cs +++ b/src/BenchmarkDotNet/Reports/BenchmarkReport.cs @@ -3,10 +3,16 @@ using System.Collections.Immutable; using System.Linq; using BenchmarkDotNet.Engines; +using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Mathematics; +using BenchmarkDotNet.Phd; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains.Results; using JetBrains.Annotations; +using Perfolizer.Horology; +using Perfolizer.Phd; +using Perfolizer.Phd.Base; +using Perfolizer.Phd.Dto; namespace BenchmarkDotNet.Reports { @@ -51,5 +57,51 @@ public BenchmarkReport( public override string ToString() => $"{BenchmarkCase.DisplayInfo}, {AllMeasurements.Count} runs"; public IReadOnlyList GetResultRuns() => AllMeasurements.Where(r => r.Is(IterationMode.Workload, IterationStage.Result)).ToList(); + + public PhdEntry ToPhd() + { + var entry = new PhdEntry + { + Benchmark = new BdnBenchmark + { + Display = BenchmarkCase.DisplayInfo, + Namespace = BenchmarkCase.Descriptor.Type.Namespace ?? "", + Type = FullNameProvider.GetTypeName(BenchmarkCase.Descriptor.Type), + Method = BenchmarkCase.Descriptor.WorkloadMethod.Name, + MethodTitle = BenchmarkCase.Descriptor.WorkloadMethodDisplayInfo, + Parameters = BenchmarkCase.Parameters.PrintInfo, + FullName = FullNameProvider.GetBenchmarkName(BenchmarkCase), + HardwareIntrinsics = this.GetHardwareIntrinsicsInfo() + } + }; + + var lifecycles = AllMeasurements.GroupBy(m => new BdnLifecycle + { + LaunchIndex = m.LaunchIndex, + IterationMode = m.IterationMode, + IterationStage = m.IterationStage + }).OrderBy(x => x.Key).ToList(); + foreach (var lifecycleGroup in lifecycles) + { + var measurementsEntry = new PhdEntry + { + Lifecycle = lifecycleGroup.Key + }; + + foreach (var measurement in lifecycleGroup.ToList()) + { + measurementsEntry.Add(new PhdEntry + { + IterationIndex = measurement.IterationIndex, + InvocationCount = measurement.Operations, + Value = measurement.Nanoseconds / measurement.Operations, + Unit = TimeUnit.Nanosecond + }); + } + entry.Add(measurementsEntry); + } + + return entry; + } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Reports/Summary.cs b/src/BenchmarkDotNet/Reports/Summary.cs index 3822ed8acb..490b8c9fd0 100644 --- a/src/BenchmarkDotNet/Reports/Summary.cs +++ b/src/BenchmarkDotNet/Reports/Summary.cs @@ -8,10 +8,14 @@ using BenchmarkDotNet.Environments; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Order; +using BenchmarkDotNet.Phd; using BenchmarkDotNet.Running; using BenchmarkDotNet.Validators; using JetBrains.Annotations; using Perfolizer.Horology; +using Perfolizer.Phd; +using Perfolizer.Phd.Base; +using Perfolizer.Phd.Dto; namespace BenchmarkDotNet.Reports { @@ -62,7 +66,8 @@ public Summary( DisplayPrecisionManager = new DisplayPrecisionManager(this); Orderer = GetConfiguredOrdererOrDefaultOne(reports.Select(report => report.BenchmarkCase.Config)); - BenchmarksCases = Orderer.GetSummaryOrder(reports.Select(report => report.BenchmarkCase).ToImmutableArray(), this).ToImmutableArray(); // we sort it first + BenchmarksCases = + Orderer.GetSummaryOrder(reports.Select(report => report.BenchmarkCase).ToImmutableArray(), this).ToImmutableArray(); // we sort it first Reports = BenchmarksCases.Select(b => ReportMap[b]).ToImmutableArray(); // we use sorted collection to re-create reports list BaseliningStrategy = BaseliningStrategy.Create(BenchmarksCases); Style = (summaryStyle ?? GetConfiguredSummaryStyleOrDefaultOne(BenchmarksCases)).WithCultureInfo(cultureInfo); @@ -84,8 +89,10 @@ public Summary( public bool IsMultipleRuntimes => isMultipleRuntimes ??= BenchmarksCases.Length > 1 ? BenchmarksCases.Select(benchmark => benchmark.GetRuntime()).Distinct().Count() > 1 : false; - internal static Summary ValidationFailed(string title, string resultsDirectoryPath, string logFilePath, ImmutableArray? validationErrors = null) - => new Summary(title, ImmutableArray.Empty, HostEnvironmentInfo.GetCurrent(), resultsDirectoryPath, logFilePath, TimeSpan.Zero, DefaultCultureInfo.Instance, validationErrors ?? ImmutableArray.Empty, ImmutableArray.Empty); + internal static Summary ValidationFailed(string title, string resultsDirectoryPath, string logFilePath, + ImmutableArray? validationErrors = null) + => new Summary(title, ImmutableArray.Empty, HostEnvironmentInfo.GetCurrent(), resultsDirectoryPath, logFilePath, TimeSpan.Zero, + DefaultCultureInfo.Instance, validationErrors ?? ImmutableArray.Empty, ImmutableArray.Empty); internal static Summary Join(List summaries, ClockSpan clockSpan) => new Summary( @@ -167,5 +174,22 @@ private static SummaryStyle GetConfiguredSummaryStyleOrDefaultOne(ImmutableArray .Distinct() .SingleOrDefault() ?? SummaryStyle.Default; + + // TODO: GcStats + public PhdEntry ToPhd() + { + var root = new PhdEntry + { + Engine = new PhdEngine + { + Name = HostEnvironmentInfo.BenchmarkDotNetCaption, + Version = HostEnvironmentInfo.BenchmarkDotNetVersion, + }, + Host = HostEnvironmentInfo.ToPhd() + }; + foreach (var benchmarkReport in Reports) + root.Add(benchmarkReport.ToPhd()); + return root; + } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs b/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs index 4a1e85eee9..e8088702f1 100644 --- a/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs +++ b/src/BenchmarkDotNet/Running/BenchmarkRunnerClean.cs @@ -8,6 +8,7 @@ using BenchmarkDotNet.Characteristics; using BenchmarkDotNet.Columns; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Environments; @@ -43,7 +44,7 @@ internal static Summary[] Run(BenchmarkRunInfo[] benchmarkRunInfos) var artifactsToCleanup = new List(); var rootArtifactsFolderPath = GetRootArtifactsFolderPath(benchmarkRunInfos); - var maxTitleLength = RuntimeInformation.IsWindows() + var maxTitleLength = OsDetector.IsWindows() ? 254 - rootArtifactsFolderPath.Length : int.MaxValue; var title = GetTitle(benchmarkRunInfos, maxTitleLength); diff --git a/src/BenchmarkDotNet/Running/ConsoleTitler.cs b/src/BenchmarkDotNet/Running/ConsoleTitler.cs index 9f8e21a1fe..7458388c42 100644 --- a/src/BenchmarkDotNet/Running/ConsoleTitler.cs +++ b/src/BenchmarkDotNet/Running/ConsoleTitler.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; namespace BenchmarkDotNet.Running @@ -62,7 +63,7 @@ public ConsoleTitler(string initialTitle) #if NET6_0_OR_GREATER [System.Runtime.Versioning.SupportedOSPlatformGuard("windows")] #endif - private static bool PlatformSupportsTitleRead() => RuntimeInformation.IsWindows(); + private static bool PlatformSupportsTitleRead() => OsDetector.IsWindows(); /// /// Updates Console.Title if enabled. diff --git a/src/BenchmarkDotNet/Running/PowerManagementApplier.cs b/src/BenchmarkDotNet/Running/PowerManagementApplier.cs index fdfa0239f5..f240c1a209 100644 --- a/src/BenchmarkDotNet/Running/PowerManagementApplier.cs +++ b/src/BenchmarkDotNet/Running/PowerManagementApplier.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Loggers; @@ -33,7 +34,7 @@ internal class PowerManagementApplier : IDisposable internal void ApplyPerformancePlan(Guid id) { - if (!RuntimeInformation.IsWindows() || id == Guid.Empty) + if (!OsDetector.IsWindows() || id == Guid.Empty) return; if (id != UserPowerPlan) @@ -44,7 +45,7 @@ internal void ApplyPerformancePlan(Guid id) private void ApplyUserPowerPlan() { - if (powerPlanChanged && RuntimeInformation.IsWindows()) + if (powerPlanChanged && OsDetector.IsWindows()) { try { diff --git a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs index 187458be17..2761bd7c2c 100644 --- a/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs +++ b/src/BenchmarkDotNet/Toolchains/CsProj/CsProjClassicNetToolchain.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using BenchmarkDotNet.Characteristics; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains.DotNetCli; @@ -44,7 +45,7 @@ public override IEnumerable Validate(BenchmarkCase benchmarkCas yield return validationError; } - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) { yield return new ValidationError(true, $"Classic .NET toolchain is supported only for Windows, benchmark '{benchmarkCase.DisplayInfo}' will not be executed", diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/CustomDotNetCliToolchainBuilder.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/CustomDotNetCliToolchainBuilder.cs index dc48965f1e..3e56c6be24 100644 --- a/src/BenchmarkDotNet/Toolchains/DotNetCli/CustomDotNetCliToolchainBuilder.cs +++ b/src/BenchmarkDotNet/Toolchains/DotNetCli/CustomDotNetCliToolchainBuilder.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.IO; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Portability; using JetBrains.Annotations; @@ -127,7 +128,7 @@ internal static string GetPortableRuntimeIdentifier() // Microsoft.DotNet.PlatformAbstractions.RuntimeEnvironment.GetRuntimeIdentifier() // returns win10-x64, we want the simpler form win-x64 // the values taken from https://docs.microsoft.com/en-us/dotnet/core/rid-catalog#macos-rids - string osPart = RuntimeInformation.IsWindows() ? "win" : (RuntimeInformation.IsMacOS() ? "osx" : "linux"); + string osPart = OsDetector.IsWindows() ? "win" : (OsDetector.IsMacOS() ? "osx" : "linux"); string architecture = #if NETSTANDARD diff --git a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommandExecutor.cs b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommandExecutor.cs index 10ce4ef15d..5cbff89b47 100644 --- a/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommandExecutor.cs +++ b/src/BenchmarkDotNet/Toolchains/DotNetCli/DotNetCliCommandExecutor.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text; using System.Text.RegularExpressions; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Jobs; @@ -137,7 +138,7 @@ internal static ProcessStartInfo BuildStartInfo(string? customDotNetCliPath, str private static string GetDefaultDotNetCliPath() { - if (!Portability.RuntimeInformation.IsLinux()) + if (!OsDetector.IsLinux()) return "dotnet"; using (var parentProcess = Process.GetProcessById(libc.getppid())) diff --git a/src/BenchmarkDotNet/Toolchains/GeneratorBase.cs b/src/BenchmarkDotNet/Toolchains/GeneratorBase.cs index cab9d811c4..020788cc56 100644 --- a/src/BenchmarkDotNet/Toolchains/GeneratorBase.cs +++ b/src/BenchmarkDotNet/Toolchains/GeneratorBase.cs @@ -2,6 +2,7 @@ using System.IO; using System.Text; using BenchmarkDotNet.Code; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Portability; @@ -60,7 +61,7 @@ protected virtual string GetIntermediateDirectoryPath(string buildArtifactsDirec /// returns OS-specific executable extension /// [PublicAPI] protected virtual string GetExecutableExtension() - => RuntimeInformation.ExecutableExtension; + => OsDetector.ExecutableExtension; /// /// returns a path to the auto-generated .csproj file @@ -142,7 +143,7 @@ private ArtifactsPaths GetArtifactsPaths(BuildPartition buildPartition, string r appConfigPath: $"{executablePath}.config", nuGetConfigPath: Path.Combine(buildArtifactsDirectoryPath, "NuGet.config"), projectFilePath: GetProjectFilePath(buildArtifactsDirectoryPath), - buildScriptFilePath: Path.Combine(buildArtifactsDirectoryPath, $"{programName}{RuntimeInformation.ScriptFileExtension}"), + buildScriptFilePath: Path.Combine(buildArtifactsDirectoryPath, $"{programName}{OsDetector.ScriptFileExtension}"), executablePath: executablePath, programName: programName, packagesDirectoryName: GetPackagesDirectoryPath(buildArtifactsDirectoryPath)); diff --git a/src/BenchmarkDotNet/Toolchains/InProcess/Emit/InProcessEmitExecutor.cs b/src/BenchmarkDotNet/Toolchains/InProcess/Emit/InProcessEmitExecutor.cs index 64d2019a75..60d6f8a6ae 100644 --- a/src/BenchmarkDotNet/Toolchains/InProcess/Emit/InProcessEmitExecutor.cs +++ b/src/BenchmarkDotNet/Toolchains/InProcess/Emit/InProcessEmitExecutor.cs @@ -3,6 +3,7 @@ using System.Linq; using System.Reflection; using System.Threading; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Environments; @@ -59,7 +60,7 @@ public ExecuteResult Execute(ExecuteParameters executeParameters) if (executeParameters.BenchmarkCase.Descriptor.WorkloadMethod .GetCustomAttributes(false) .Any() && - Portability.RuntimeInformation.IsWindows()) + OsDetector.IsWindows()) { runThread.SetApartmentState(ApartmentState.STA); } diff --git a/src/BenchmarkDotNet/Toolchains/InProcess/NoEmit/InProcessNoEmitExecutor.cs b/src/BenchmarkDotNet/Toolchains/InProcess/NoEmit/InProcessNoEmitExecutor.cs index 49cd24e3d4..b50ba77c1c 100644 --- a/src/BenchmarkDotNet/Toolchains/InProcess/NoEmit/InProcessNoEmitExecutor.cs +++ b/src/BenchmarkDotNet/Toolchains/InProcess/NoEmit/InProcessNoEmitExecutor.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection; using System.Threading; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Extensions; @@ -59,7 +60,7 @@ public ExecuteResult Execute(ExecuteParameters executeParameters) var runThread = new Thread(() => exitCode = ExecuteCore(host, executeParameters)); if (executeParameters.BenchmarkCase.Descriptor.WorkloadMethod.GetCustomAttributes(false).Any() && - Portability.RuntimeInformation.IsWindows()) + OsDetector.IsWindows()) { runThread.SetApartmentState(ApartmentState.STA); } diff --git a/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs b/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs index 833c113d84..de3cef53d3 100644 --- a/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs +++ b/src/BenchmarkDotNet/Toolchains/MonoAotLLVM/MonoAotLLVMGenerator.cs @@ -1,6 +1,7 @@ using System.IO; using System.Text; using System.Xml; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Loggers; @@ -54,7 +55,7 @@ protected override void GenerateProject(BuildPartition buildPartition, Artifacts } protected override string GetExecutablePath(string binariesDirectoryPath, string programName) - => Portability.RuntimeInformation.IsWindows() + => OsDetector.IsWindows() ? Path.Combine(binariesDirectoryPath, "publish", $"{programName}.exe") : Path.Combine(binariesDirectoryPath, "publish", programName); diff --git a/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmToolchain.cs b/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmToolchain.cs index 42e5c428d2..71ad2ade2b 100644 --- a/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmToolchain.cs +++ b/src/BenchmarkDotNet/Toolchains/MonoWasm/WasmToolchain.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using BenchmarkDotNet.Characteristics; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains.DotNetCli; @@ -26,7 +27,7 @@ public override IEnumerable Validate(BenchmarkCase benchmarkCas yield return validationError; } - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) { yield return new ValidationError(true, $"{nameof(WasmToolchain)} is supported only on Unix, benchmark '{benchmarkCase.DisplayInfo}' might not work correctly", diff --git a/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs b/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs index 2f2a6d80f3..c9c964d7eb 100644 --- a/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs +++ b/src/BenchmarkDotNet/Toolchains/NativeAot/Generator.cs @@ -4,12 +4,13 @@ using System.Linq; using System.Text; using BenchmarkDotNet.ConsoleArguments; +using BenchmarkDotNet.Detectors; +using BenchmarkDotNet.Detectors.Cpu; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Portability; -using BenchmarkDotNet.Portability.Cpu; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains.CsProj; using BenchmarkDotNet.Toolchains.DotNetCli; @@ -57,7 +58,7 @@ internal Generator(string ilCompilerVersion, private readonly string ilcOptimizationPreference; private readonly string ilcInstructionSet; - protected override string GetExecutableExtension() => RuntimeInformation.ExecutableExtension; + protected override string GetExecutableExtension() => OsDetector.ExecutableExtension; protected override string GetBuildArtifactsDirectoryPath(BuildPartition buildPartition, string programName) => useTempFolderForRestore diff --git a/src/BenchmarkDotNet/Toolchains/Roslyn/Generator.cs b/src/BenchmarkDotNet/Toolchains/Roslyn/Generator.cs index 0718d6b8cb..3ba7054f7a 100644 --- a/src/BenchmarkDotNet/Toolchains/Roslyn/Generator.cs +++ b/src/BenchmarkDotNet/Toolchains/Roslyn/Generator.cs @@ -2,6 +2,7 @@ using System.IO; using System.Linq; using System.Reflection; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Portability; using BenchmarkDotNet.Running; @@ -27,9 +28,9 @@ protected override string[] GetArtifactsToCleanup(ArtifactsPaths artifactsPaths) protected override void GenerateBuildScript(BuildPartition buildPartition, ArtifactsPaths artifactsPaths) { - string prefix = RuntimeInformation.IsWindows() ? "" : "#!/bin/bash\n"; + string prefix = OsDetector.IsWindows() ? "" : "#!/bin/bash\n"; var list = new List(); - if (!RuntimeInformation.IsWindows()) + if (!OsDetector.IsWindows()) list.Add("mono"); list.Add("csc"); list.Add("/noconfig"); diff --git a/src/BenchmarkDotNet/Toolchains/ToolchainExtensions.cs b/src/BenchmarkDotNet/Toolchains/ToolchainExtensions.cs index c2872810fc..499d5d8f40 100644 --- a/src/BenchmarkDotNet/Toolchains/ToolchainExtensions.cs +++ b/src/BenchmarkDotNet/Toolchains/ToolchainExtensions.cs @@ -1,4 +1,5 @@ using System; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Helpers; @@ -46,9 +47,9 @@ internal static IToolchain GetToolchain(this Runtime runtime, Descriptor? descri : CsProjClassicNetToolchain.From(clrRuntime.MsBuildMoniker); case MonoRuntime mono: - if (RuntimeInformation.IsAndroid()) + if (OsDetector.IsAndroid()) return InProcessEmitToolchain.Instance; - if (RuntimeInformation.IsIOS()) + if (OsDetector.IsIOS()) return InProcessNoEmitToolchain.Instance; if (!string.IsNullOrEmpty(mono.AotArgs)) return MonoAotToolchain.Instance; diff --git a/tests/BenchmarkDotNet.IntegrationTests.ManualRunning/ExpectedBenchmarkResultsTests.cs b/tests/BenchmarkDotNet.IntegrationTests.ManualRunning/ExpectedBenchmarkResultsTests.cs index b1309efdf0..29bf8275dd 100644 --- a/tests/BenchmarkDotNet.IntegrationTests.ManualRunning/ExpectedBenchmarkResultsTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests.ManualRunning/ExpectedBenchmarkResultsTests.cs @@ -4,6 +4,7 @@ using BenchmarkDotNet.Analysers; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Engines; using BenchmarkDotNet.Extensions; @@ -110,7 +111,7 @@ private void AssertZeroResults(Type benchmarkType, IConfig config) .AddDiagnoser(new MemoryDiagnoser(new MemoryDiagnoserConfig(false))) ); - var cpuResolution = RuntimeInformation.GetCpuInfo()?.MaxFrequency?.ToResolution() ?? FallbackCpuResolutionValue; + var cpuResolution = CpuDetector.Cpu?.MaxFrequency()?.ToResolution() ?? FallbackCpuResolutionValue; var threshold = new NumberValue(cpuResolution.Nanoseconds).ToThreshold(); foreach (var report in summary.Reports) @@ -163,7 +164,7 @@ private void AssertDifferentSizedStructsResults(IConfig config) .AddDiagnoser(new MemoryDiagnoser(new MemoryDiagnoserConfig(false))) ); - var cpuResolution = RuntimeInformation.GetCpuInfo().MaxFrequency?.ToResolution() ?? FallbackCpuResolutionValue; + var cpuResolution = CpuDetector.Cpu?.MaxFrequency()?.ToResolution() ?? FallbackCpuResolutionValue; var threshold = (cpuResolution / 2).ToThreshold(); foreach (var report in summary.Reports) diff --git a/tests/BenchmarkDotNet.IntegrationTests/BuildTimeoutTests.cs b/tests/BenchmarkDotNet.IntegrationTests/BuildTimeoutTests.cs index e672bcc906..101fa50139 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/BuildTimeoutTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/BuildTimeoutTests.cs @@ -1,6 +1,7 @@ using System; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; @@ -19,7 +20,7 @@ public void WhenBuildTakesMoreTimeThanTheTimeoutTheBuildIsCancelled() { if (!RuntimeInformation.Is64BitPlatform()) // NativeAOT does not support 32bit yet return; - if (RuntimeInformation.IsMacOS()) + if (OsDetector.IsMacOS()) return; // currently not supported // we use NativeAOT on purpose because it takes a LOT of time to build it diff --git a/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs b/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs index 0f112aa328..8b8710efe5 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/ContinuousIntegration.cs @@ -1,5 +1,6 @@ using BenchmarkDotNet.Portability; using System; +using BenchmarkDotNet.Detectors; namespace BenchmarkDotNet.IntegrationTests { @@ -8,7 +9,7 @@ internal static class ContinuousIntegration private static bool IsGitHubActions() => !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GITHUB_ACTION")); internal static bool IsGitHubActionsOnWindows() - => RuntimeInformation.IsWindows() && IsGitHubActions(); + => OsDetector.IsWindows() && IsGitHubActions(); internal static bool IsLocalRun() => !IsGitHubActions(); } diff --git a/tests/BenchmarkDotNet.IntegrationTests/DisassemblyDiagnoserTests.cs b/tests/BenchmarkDotNet.IntegrationTests/DisassemblyDiagnoserTests.cs index bd2f6d48c2..26c17eed04 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/DisassemblyDiagnoserTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/DisassemblyDiagnoserTests.cs @@ -5,6 +5,7 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Columns; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Disassemblers; using BenchmarkDotNet.Engines; @@ -36,12 +37,12 @@ public static IEnumerable GetAllJits() { yield return new object[] { Jit.RyuJit, Platform.X64, CoreRuntime.Core80 }; // .NET Core x64 } - else if (RuntimeInformation.GetCurrentPlatform() is Platform.Arm64 && RuntimeInformation.IsLinux()) + else if (RuntimeInformation.GetCurrentPlatform() is Platform.Arm64 && OsDetector.IsLinux()) { yield return new object[] { Jit.RyuJit, Platform.Arm64, CoreRuntime.Core80 }; // .NET Core arm64 } } - if (RuntimeInformation.IsMacOS()) + if (OsDetector.IsMacOS()) { // This scope of tests is not supported on macOS // However, when the MemberData method provides no data, xUnit throws an "No data found" InvalidOperationException @@ -91,7 +92,7 @@ public void Recursive() [Trait(Constants.Category, Constants.BackwardCompatibilityCategory)] public void CanDisassembleAllMethodCalls(Jit jit, Platform platform, Runtime runtime) { - if (RuntimeInformation.IsMacOS()) return; // currently not supported + if (OsDetector.IsMacOS()) return; // currently not supported var disassemblyDiagnoser = new DisassemblyDiagnoser( new DisassemblyDiagnoserConfig(printSource: true, maxDepth: 3)); @@ -110,7 +111,7 @@ public void CanDisassembleAllMethodCalls(Jit jit, Platform platform, Runtime run [Trait(Constants.Category, Constants.BackwardCompatibilityCategory)] public void CanDisassembleAllMethodCallsUsingFilters(Jit jit, Platform platform, Runtime runtime) { - if (RuntimeInformation.IsMacOS()) return; // currently not supported + if (OsDetector.IsMacOS()) return; // currently not supported var disassemblyDiagnoser = new DisassemblyDiagnoser( new DisassemblyDiagnoserConfig(printSource: true, maxDepth: 1, filters: new[] { "*WithCalls*" })); @@ -135,7 +136,7 @@ public void CanDisassembleAllMethodCallsUsingFilters(Jit jit, Platform platform, [Trait(Constants.Category, Constants.BackwardCompatibilityCategory)] public void CanDisassembleGenericTypes(Jit jit, Platform platform, Runtime runtime) { - if (RuntimeInformation.IsMacOS()) return; // currently not supported + if (OsDetector.IsMacOS()) return; // currently not supported var disassemblyDiagnoser = new DisassemblyDiagnoser( new DisassemblyDiagnoserConfig(printSource: true, maxDepth: 3)); @@ -157,7 +158,7 @@ [Benchmark] public void JustReturn() { } [Trait(Constants.Category, Constants.BackwardCompatibilityCategory)] public void CanDisassembleInlinableBenchmarks(Jit jit, Platform platform, Runtime runtime) { - if (RuntimeInformation.IsMacOS()) return; // currently not supported + if (OsDetector.IsMacOS()) return; // currently not supported var disassemblyDiagnoser = new DisassemblyDiagnoser( new DisassemblyDiagnoserConfig(printSource: true, maxDepth: 3)); diff --git a/tests/BenchmarkDotNet.IntegrationTests/DotMemoryTests.cs b/tests/BenchmarkDotNet.IntegrationTests/DotMemoryTests.cs index 1e8dc79d00..2f21fb9f3c 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/DotMemoryTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/DotMemoryTests.cs @@ -4,6 +4,7 @@ using System.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnostics.dotMemory; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; @@ -20,7 +21,7 @@ public DotMemoryTests(ITestOutputHelper output) : base(output) { } [Fact] public void DotMemorySmokeTest() { - if (!RuntimeInformation.IsWindows() && RuntimeInformation.IsMono) + if (!OsDetector.IsWindows() && RuntimeInformation.IsMono) { Output.WriteLine("Skip Mono on non-Windows"); return; diff --git a/tests/BenchmarkDotNet.IntegrationTests/DotTraceTests.cs b/tests/BenchmarkDotNet.IntegrationTests/DotTraceTests.cs index 80f11519e8..3c40ee31a0 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/DotTraceTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/DotTraceTests.cs @@ -4,6 +4,7 @@ using System.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnostics.dotTrace; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Portability; @@ -20,7 +21,7 @@ public DotTraceTests(ITestOutputHelper output) : base(output) { } [Fact] public void DotTraceSmokeTest() { - if (!RuntimeInformation.IsWindows() && RuntimeInformation.IsMono) + if (!OsDetector.IsWindows() && RuntimeInformation.IsMono) { Output.WriteLine("Skip Mono on non-Windows"); return; diff --git a/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs b/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs index fc6bc14362..db3dddfe2e 100755 --- a/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/MemoryDiagnoserTests.cs @@ -8,6 +8,7 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Columns; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Diagnosers; using BenchmarkDotNet.Extensions; using BenchmarkDotNet.IntegrationTests.Xunit; @@ -69,7 +70,7 @@ public void MemoryDiagnoserIsAccurate(IToolchain toolchain) [FactEnvSpecific("We don't want to test NativeAOT twice (for .NET Framework 4.6.2 and .NET 7.0)", EnvRequirement.DotNetCoreOnly)] public void MemoryDiagnoserSupportsNativeAOT() { - if (RuntimeInformation.IsMacOS()) + if (OsDetector.IsMacOS()) return; // currently not supported MemoryDiagnoserIsAccurate(NativeAotToolchain.Net80); diff --git a/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs b/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs index ce39b0572e..169fb3a0b3 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/NativeAotTests.cs @@ -1,6 +1,7 @@ using System; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Environments; using BenchmarkDotNet.IntegrationTests.Xunit; using BenchmarkDotNet.Jobs; @@ -22,7 +23,7 @@ public void LatestNativeAotVersionIsSupported() return; if (ContinuousIntegration.IsGitHubActionsOnWindows()) // no native dependencies installed return; - if (RuntimeInformation.IsMacOS()) + if (OsDetector.IsMacOS()) return; // currently not supported var toolchain = NativeAotToolchain.CreateBuilder().UseNuGet().IlcInstructionSet(IsAvx2Supported() ? "avx2" : "").ToToolchain(); diff --git a/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs b/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs index 213bc3af02..724a882e22 100644 --- a/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs +++ b/tests/BenchmarkDotNet.IntegrationTests/ThreadingDiagnoserTests.cs @@ -14,6 +14,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.IntegrationTests.Xunit; using BenchmarkDotNet.Portability; using Xunit; @@ -32,7 +33,7 @@ public static IEnumerable GetToolchains() yield return new object[] { Job.Default.GetToolchain() }; if (!ContinuousIntegration.IsGitHubActionsOnWindows() // no native dependencies - && !RuntimeInformation.IsMacOS()) // currently not supported + && !OsDetector.IsMacOS()) // currently not supported { yield return new object[]{ NativeAotToolchain.Net80 }; } diff --git a/tests/BenchmarkDotNet.Tests/Attributes/ParamsAllValuesVerifyTests.cs b/tests/BenchmarkDotNet.Tests/Attributes/ParamsAllValuesVerifyTests.cs index a1086da1de..f766f0eba3 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/ParamsAllValuesVerifyTests.cs +++ b/tests/BenchmarkDotNet.Tests/Attributes/ParamsAllValuesVerifyTests.cs @@ -9,6 +9,7 @@ using BenchmarkDotNet.Tests.Mocks; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Tests.Builders; +using BenchmarkDotNet.Tests.Infra; using BenchmarkDotNet.Validators; using JetBrains.Annotations; using VerifyXunit; @@ -53,7 +54,7 @@ public Task BenchmarkShouldProduceSummary(Type benchmarkType) foreach (var error in errors) logger.WriteLineError("* " + error.Message); - var settings = VerifySettingsFactory.Create(); + var settings = VerifyHelper.Create(); settings.UseTextForParameters(benchmarkType.Name); return Verifier.Verify(logger.GetLog(), settings); } diff --git a/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj b/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj index fcdc416bbf..d0011e1d64 100755 --- a/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj +++ b/tests/BenchmarkDotNet.Tests/BenchmarkDotNet.Tests.csproj @@ -1,5 +1,5 @@  - + BenchmarkDotNet.Tests net8.0;net462 @@ -15,10 +15,10 @@ - + - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive @@ -40,9 +40,19 @@ - + - + + + + + CpuInfoFormatterTests + CpuInfoFormatterTests.cs + + + + + diff --git a/tests/BenchmarkDotNet.Tests/Builders/HostEnvironmentInfoBuilder.cs b/tests/BenchmarkDotNet.Tests/Builders/HostEnvironmentInfoBuilder.cs index aadebcab6d..0c0737ecbb 100644 --- a/tests/BenchmarkDotNet.Tests/Builders/HostEnvironmentInfoBuilder.cs +++ b/tests/BenchmarkDotNet.Tests/Builders/HostEnvironmentInfoBuilder.cs @@ -1,11 +1,14 @@ using System; +using System.Diagnostics.CodeAnalysis; using BenchmarkDotNet.Environments; +using BenchmarkDotNet.Extensions; using BenchmarkDotNet.Portability; -using BenchmarkDotNet.Portability.Cpu; using Perfolizer.Horology; +using Perfolizer.Phd.Dto; namespace BenchmarkDotNet.Tests.Builders { + [SuppressMessage("ReSharper", "InconsistentNaming")] public class HostEnvironmentInfoBuilder { private string architecture = "64mock"; @@ -20,16 +23,18 @@ public class HostEnvironmentInfoBuilder private bool isServerGC = false; private string jitInfo = "RyuJIT-v4.6.x.mock"; private string jitModules = "clrjit-v4.6.x.mock"; - private string osVersion = "Microsoft Windows NT 10.0.x.mock"; + private PhdOs os = new () { Display = "Microsoft Windows NT 10.0.x.mock" }; private string runtimeVersion = "Clr 4.0.x.mock"; - private CpuInfo cpuInfo = - new ("MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", - physicalProcessorCount: 1, - physicalCoreCount: 4, - logicalCoreCount: 8, - nominalFrequency: Frequency.FromMHz(3100), - maxFrequency: Frequency.FromMHz(3100)); + private readonly PhdCpu cpu = new () + { + ProcessorName = "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 4, + LogicalCoreCount = 8, + NominalFrequencyHz = Frequency.FromMHz(3100).Hertz.RoundToLong(), + MaxFrequencyHz = Frequency.FromMHz(3100).Hertz.RoundToLong() + }; private VirtualMachineHypervisor? virtualMachineHypervisor = HyperV.Default; @@ -55,7 +60,7 @@ public HostEnvironmentInfo Build() { return new MockHostEnvironmentInfo(architecture, benchmarkDotNetVersion, chronometerFrequency, configuration, dotNetSdkVersion, hardwareTimerKind, hasAttachedDebugger, hasRyuJit, isConcurrentGC, isServerGC, - jitInfo, jitModules, osVersion, cpuInfo, runtimeVersion, virtualMachineHypervisor); + jitInfo, jitModules, os, cpu, runtimeVersion, virtualMachineHypervisor); } } @@ -64,7 +69,7 @@ internal class MockHostEnvironmentInfo : HostEnvironmentInfo public MockHostEnvironmentInfo( string architecture, string benchmarkDotNetVersion, Frequency chronometerFrequency, string configuration, string dotNetSdkVersion, HardwareTimerKind hardwareTimerKind, bool hasAttachedDebugger, bool hasRyuJit, bool isConcurrentGC, bool isServerGC, - string jitInfo, string jitModules, string osVersion, CpuInfo cpuInfo, + string jitInfo, string jitModules, PhdOs os, PhdCpu cpu, string runtimeVersion, VirtualMachineHypervisor virtualMachineHypervisor) { Architecture = architecture; @@ -79,8 +84,8 @@ public MockHostEnvironmentInfo( IsServerGC = isServerGC; JitInfo = jitInfo; HardwareIntrinsicsShort = ""; - OsVersion = new Lazy(() => osVersion); - CpuInfo = new Lazy(() => cpuInfo); + Os = new Lazy(() => os); + Cpu = new Lazy(() => cpu); RuntimeVersion = runtimeVersion; VirtualMachineHypervisor = new Lazy(() => virtualMachineHypervisor); } diff --git a/tests/BenchmarkDotNet.Tests/Builders/VerifySettingsFactory.cs b/tests/BenchmarkDotNet.Tests/Builders/VerifySettingsFactory.cs deleted file mode 100644 index 027b5272a7..0000000000 --- a/tests/BenchmarkDotNet.Tests/Builders/VerifySettingsFactory.cs +++ /dev/null @@ -1,15 +0,0 @@ -using VerifyTests; - -namespace BenchmarkDotNet.Tests.Builders -{ - public static class VerifySettingsFactory - { - public static VerifySettings Create() - { - var result = new VerifySettings(); - result.UseDirectory("VerifiedFiles"); - result.DisableDiff(); - return result; - } - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Detectors/Cpu/CpuInfoFormatterTests.cs b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/CpuInfoFormatterTests.cs new file mode 100644 index 0000000000..342c38a1e8 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/CpuInfoFormatterTests.cs @@ -0,0 +1,39 @@ +using System.Text; +using System.Threading.Tasks; +using BenchmarkDotNet.Tests.Builders; +using BenchmarkDotNet.Tests.Infra; +using Perfolizer.Helpers; +using Perfolizer.Phd.Dto; +using VerifyXunit; +using Xunit; + +namespace BenchmarkDotNet.Tests.Detectors.Cpu; + +[Collection("VerifyTests")] +[UsesVerify] +public class CpuInfoFormatterTests +{ + [Fact] + public Task FormatTest() + { + var captions = new StringBuilder(); + foreach (var processorName in new[] { null, "", "Intel" }) + foreach (var physicalProcessorCount in new int?[] { null, 0, 1, 2 }) + foreach (var physicalCoreCount in new int?[] { null, 0, 1, 2 }) + foreach (var logicalCoreCount in new int?[] { null, 0, 1, 2 }) + { + var cpu = new PhdCpu + { + ProcessorName = processorName, + PhysicalProcessorCount = physicalProcessorCount, + PhysicalCoreCount = physicalCoreCount, + LogicalCoreCount = logicalCoreCount, + }; + + captions.AppendLine(cpu.ToFullBrandName()); + } + + var settings = VerifyHelper.Create(); + return Verifier.Verify(captions.ToString(), settings); + } +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/LinuxCpuInfoParserTests.cs b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/LinuxCpuInfoParserTests.cs similarity index 78% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/LinuxCpuInfoParserTests.cs rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/LinuxCpuInfoParserTests.cs index ab9a4ee76c..596f54aba1 100644 --- a/tests/BenchmarkDotNet.Tests/Portability/Cpu/LinuxCpuInfoParserTests.cs +++ b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/LinuxCpuInfoParserTests.cs @@ -1,10 +1,10 @@ -using BenchmarkDotNet.Portability.Cpu; -using BenchmarkDotNet.Portability.Cpu.Linux; +using BenchmarkDotNet.Detectors.Cpu.Linux; +using Perfolizer.Phd.Dto; using Xunit; using Xunit.Abstractions; using static Perfolizer.Horology.Frequency; -namespace BenchmarkDotNet.Tests.Portability.Cpu; +namespace BenchmarkDotNet.Tests.Detectors.Cpu; // ReSharper disable StringLiteralTypo public class LinuxCpuInfoParserTests(ITestOutputHelper output) @@ -15,7 +15,7 @@ public class LinuxCpuInfoParserTests(ITestOutputHelper output) public void EmptyTest() { var actual = LinuxCpuInfoParser.Parse("", ""); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -23,7 +23,7 @@ public void EmptyTest() public void MalformedTest() { var actual = LinuxCpuInfoParser.Parse("malformedkey: malformedvalue\n\nmalformedkey2: malformedvalue2", null); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -32,9 +32,15 @@ public void TwoProcessorWithDifferentCoresCountTest() { string cpuInfo = TestHelper.ReadTestFile("ProcCpuInfoProcessorWithDifferentCoresCount.txt"); var actual = LinuxCpuInfoParser.Parse(cpuInfo, null); - var expected = new CpuInfo( - "Unknown processor with 2 cores and hyper threading, Unknown processor with 4 cores", - 2, 6, 8, 2.5 * GHz, 2.5 * GHz); + var expected = new PhdCpu + { + ProcessorName = "Unknown processor with 2 cores and hyper threading, Unknown processor with 4 cores", + PhysicalProcessorCount = 2, + PhysicalCoreCount = 6, + LogicalCoreCount = 8, + NominalFrequencyHz = 2_500_000_000, + MaxFrequencyHz = 2_500_000_000 + }; Output.AssertEqual(expected, actual); } @@ -44,9 +50,15 @@ public void RealOneProcessorTwoCoresTest() { string cpuInfo = TestHelper.ReadTestFile("ProcCpuInfoRealOneProcessorTwoCores.txt"); var actual = LinuxCpuInfoParser.Parse(cpuInfo, null); - var expected = new CpuInfo( - "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", - 1, 2, 4, 2.3 * GHz, 2.3 * GHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 2, + LogicalCoreCount = 4, + NominalFrequencyHz = 2_300_000_000, + MaxFrequencyHz = 2_300_000_000 + }; Output.AssertEqual(expected, actual); } @@ -55,9 +67,15 @@ public void RealOneProcessorFourCoresTest() { string cpuInfo = TestHelper.ReadTestFile("ProcCpuInfoRealOneProcessorFourCores.txt"); var actual = LinuxCpuInfoParser.Parse(cpuInfo, null); - var expected = new CpuInfo( - "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz", - 1, 4, 8, 2.5 * GHz, 2.5 * GHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 4, + LogicalCoreCount = 8, + NominalFrequencyHz = 2_500_000_000, + MaxFrequencyHz = 2_500_000_000 + }; Output.AssertEqual(expected, actual); } @@ -94,7 +112,7 @@ public void Issue2577Test() Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp """; var actual = LinuxCpuInfoParser.Parse(cpuInfo, lscpu); - var expected = new CpuInfo("Neoverse-N1", null, 16, null, null, null); + var expected = new PhdCpu { ProcessorName = "Neoverse-N1", PhysicalCoreCount = 16 }; Output.AssertEqual(expected, actual); } @@ -130,7 +148,15 @@ flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif x2av r smca fsrm flush_l1d """; var actual = LinuxCpuInfoParser.Parse(cpuInfo, lscpu); - var expected = new CpuInfo("AMD Ryzen 9 7950X 16-Core Processor", 1, 16, 32, 5881 * MHz, 5881 * MHz); + var expected = new PhdCpu + { + ProcessorName = "AMD Ryzen 9 7950X 16-Core Processor", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 16, + LogicalCoreCount = 32, + NominalFrequencyHz = 5_881_000_000, + MaxFrequencyHz = 5_881_000_000 + }; Output.AssertEqual(expected, actual); } diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/SysctlCpuInfoParserTests.cs b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/SysctlCpuInfoParserTests.cs similarity index 61% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/SysctlCpuInfoParserTests.cs rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/SysctlCpuInfoParserTests.cs index 2aca9acb89..208a7c8373 100644 --- a/tests/BenchmarkDotNet.Tests/Portability/Cpu/SysctlCpuInfoParserTests.cs +++ b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/SysctlCpuInfoParserTests.cs @@ -1,10 +1,9 @@ -using BenchmarkDotNet.Portability.Cpu; -using BenchmarkDotNet.Portability.Cpu.macOS; +using BenchmarkDotNet.Detectors.Cpu.macOS; +using Perfolizer.Phd.Dto; using Xunit; using Xunit.Abstractions; -using static Perfolizer.Horology.Frequency; -namespace BenchmarkDotNet.Tests.Portability.Cpu; +namespace BenchmarkDotNet.Tests.Detectors.Cpu; // ReSharper disable StringLiteralTypo public class SysctlCpuInfoParserTests(ITestOutputHelper output) @@ -15,7 +14,7 @@ public class SysctlCpuInfoParserTests(ITestOutputHelper output) public void EmptyTest() { var actual = SysctlCpuInfoParser.Parse(string.Empty); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -23,7 +22,7 @@ public void EmptyTest() public void MalformedTest() { var actual = SysctlCpuInfoParser.Parse("malformedkey=malformedvalue\n\nmalformedkey2=malformedvalue2"); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -32,9 +31,15 @@ public void RealOneProcessorFourCoresTest() { string cpuInfo = TestHelper.ReadTestFile("SysctlRealOneProcessorFourCores.txt"); var actual = SysctlCpuInfoParser.Parse(cpuInfo); - var expected = new CpuInfo( - "Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz", - 1, 4, 8, 2200 * MHz, 2200 * MHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 4, + LogicalCoreCount = 8, + NominalFrequencyHz = 2_200_000_000, + MaxFrequencyHz = 2_200_000_000 + }; Output.AssertEqual(expected, actual); } } \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoProcessorWithDifferentCoresCount.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoProcessorWithDifferentCoresCount.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoProcessorWithDifferentCoresCount.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoProcessorWithDifferentCoresCount.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoRealOneProcessorFourCores.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoRealOneProcessorFourCores.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoRealOneProcessorFourCores.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoRealOneProcessorFourCores.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoRealOneProcessorTwoCores.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoRealOneProcessorTwoCores.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ProcCpuInfoRealOneProcessorTwoCores.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ProcCpuInfoRealOneProcessorTwoCores.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/SysctlRealOneProcessorFourCores.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/SysctlRealOneProcessorFourCores.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/SysctlRealOneProcessorFourCores.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/SysctlRealOneProcessorFourCores.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ryzen9-cpuinfo.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ryzen9-cpuinfo.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestFiles/ryzen9-cpuinfo.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestFiles/ryzen9-cpuinfo.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestHelper.cs b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestHelper.cs similarity index 71% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/TestHelper.cs rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestHelper.cs index d95a8b5dfb..806035da29 100644 --- a/tests/BenchmarkDotNet.Tests/Portability/Cpu/TestHelper.cs +++ b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/TestHelper.cs @@ -1,11 +1,12 @@ using System.IO; using System.Reflection; -using BenchmarkDotNet.Portability.Cpu; using JetBrains.Annotations; +using Perfolizer.Helpers; +using Perfolizer.Phd.Dto; using Xunit; using Xunit.Abstractions; -namespace BenchmarkDotNet.Tests.Portability.Cpu; +namespace BenchmarkDotNet.Tests.Detectors.Cpu; public static class TestHelper { @@ -23,15 +24,15 @@ public static string ReadTestFile(string name) } [AssertionMethod] - public static void AssertEqual(this ITestOutputHelper output, CpuInfo expected, CpuInfo actual) + public static void AssertEqual(this ITestOutputHelper output, PhdCpu expected, PhdCpu actual) { - output.WriteLine($"Expected : {CpuInfoFormatter.Format(expected)}"); - output.WriteLine($"Actual : {CpuInfoFormatter.Format(actual)}"); + output.WriteLine($"Expected : {expected.ToFullBrandName()}"); + output.WriteLine($"Actual : {actual.ToFullBrandName()}"); Assert.Equal(expected.ProcessorName, actual.ProcessorName); Assert.Equal(expected.PhysicalProcessorCount, actual.PhysicalProcessorCount); Assert.Equal(expected.PhysicalCoreCount, actual.PhysicalCoreCount); Assert.Equal(expected.LogicalCoreCount, actual.LogicalCoreCount); - Assert.Equal(expected.NominalFrequency, actual.NominalFrequency); - Assert.Equal(expected.MaxFrequency, actual.MaxFrequency); + Assert.Equal(expected.NominalFrequency(), actual.NominalFrequency()); + Assert.Equal(expected.MaxFrequency(), actual.MaxFrequency()); } } \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/VerifiedFiles/CpuInfoFormatterTests.FormatTest.verified.txt b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/VerifiedFiles/CpuInfoFormatterTests.FormatTest.verified.txt similarity index 100% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/VerifiedFiles/CpuInfoFormatterTests.FormatTest.verified.txt rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/VerifiedFiles/CpuInfoFormatterTests.FormatTest.verified.txt diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/WmicCpuInfoParserTests.cs b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/WmicCpuInfoParserTests.cs similarity index 64% rename from tests/BenchmarkDotNet.Tests/Portability/Cpu/WmicCpuInfoParserTests.cs rename to tests/BenchmarkDotNet.Tests/Detectors/Cpu/WmicCpuInfoParserTests.cs index 98f170ed03..3ee84a8e44 100644 --- a/tests/BenchmarkDotNet.Tests/Portability/Cpu/WmicCpuInfoParserTests.cs +++ b/tests/BenchmarkDotNet.Tests/Detectors/Cpu/WmicCpuInfoParserTests.cs @@ -1,10 +1,10 @@ -using BenchmarkDotNet.Portability.Cpu; -using BenchmarkDotNet.Portability.Cpu.Windows; +using BenchmarkDotNet.Detectors.Cpu.Windows; +using Perfolizer.Phd.Dto; using Xunit; using Xunit.Abstractions; using static Perfolizer.Horology.Frequency; -namespace BenchmarkDotNet.Tests.Portability.Cpu; +namespace BenchmarkDotNet.Tests.Detectors.Cpu; // ReSharper disable StringLiteralTypo public class WmicCpuInfoParserTests(ITestOutputHelper output) @@ -15,7 +15,7 @@ public class WmicCpuInfoParserTests(ITestOutputHelper output) public void EmptyTest() { var actual = WmicCpuInfoParser.Parse(string.Empty); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -23,7 +23,7 @@ public void EmptyTest() public void MalformedTest() { var actual = WmicCpuInfoParser.Parse("malformedkey=malformedvalue\n\nmalformedkey2=malformedvalue2"); - var expected = CpuInfo.Empty; + var expected = new PhdCpu(); Output.AssertEqual(expected, actual); } @@ -45,9 +45,15 @@ public void RealTwoProcessorEightCoresTest() "; var actual = WmicCpuInfoParser.Parse(cpuInfo); - var expected = new CpuInfo( - "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", - 2, 16, 32, 2400 * MHz, 2400 * MHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz", + PhysicalProcessorCount = 2, + PhysicalCoreCount = 16, + LogicalCoreCount = 32, + NominalFrequencyHz = 2_400_000_000, + MaxFrequencyHz = 2_400_000_000, + }; Output.AssertEqual(expected, actual); } @@ -71,9 +77,15 @@ public void RealTwoProcessorEightCoresWithWmicBugTest() "\r\r\n" + "\r\r\n"; var actual = WmicCpuInfoParser.Parse(cpuInfo); - var expected = new CpuInfo( - "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz", - 2, 16, 32, 3111 * MHz, 3111 * MHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Xeon(R) CPU E5-2687W 0 @ 3.10GHz", + PhysicalProcessorCount = 2, + PhysicalCoreCount = 16, + LogicalCoreCount = 32, + NominalFrequencyHz = 3_111_000_000, + MaxFrequencyHz = 3_111_000_000, + }; Output.AssertEqual(expected, actual); } @@ -90,9 +102,15 @@ public void RealOneProcessorFourCoresTest() "; var actual = WmicCpuInfoParser.Parse(cpuInfo); - var expected = new CpuInfo( - "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz", - 1, 4, 8, 2500 * MHz, 2500 * MHz); + var expected = new PhdCpu + { + ProcessorName = "Intel(R) Core(TM) i7-4710MQ CPU @ 2.50GHz", + PhysicalProcessorCount = 1, + PhysicalCoreCount = 4, + LogicalCoreCount = 8, + NominalFrequencyHz = 2_500_000_000, + MaxFrequencyHz = 2_500_000_000, + }; Output.AssertEqual(expected, actual); } } \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs b/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs index 977be28869..a49d9ea2e7 100644 --- a/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs +++ b/tests/BenchmarkDotNet.Tests/Environments/HostEnvironmentInfoTests.cs @@ -4,6 +4,7 @@ using BenchmarkDotNet.Portability; using BenchmarkDotNet.Tests.Builders; using JetBrains.Annotations; +using Perfolizer.Helpers; using Xunit; namespace BenchmarkDotNet.Tests.Environments @@ -22,7 +23,7 @@ public void ReturnsHypervisorNameWhenItsDetected(string hypervisorName) string line = info.ToFormattedString().First(); string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption} v{info.BenchmarkDotNetVersion}, " + - $"{info.OsVersion.Value} ({hypervisor.Name})"; + $"{info.Os.Value.ToBrandString()} ({hypervisor.Name})"; Assert.Equal(expected, line); } @@ -46,7 +47,7 @@ public void DoesntReturnHypervisorNameWhenItsNotDetected() string line = info.ToFormattedString().First(); string expected = $"{HostEnvironmentInfo.BenchmarkDotNetCaption} v{info.BenchmarkDotNetVersion}, " + - $"{info.OsVersion.Value}"; + $"{info.Os.Value.ToBrandString()}"; Assert.Equal(expected, line); } } diff --git a/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs b/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs deleted file mode 100644 index 5690fbe6b7..0000000000 --- a/tests/BenchmarkDotNet.Tests/Environments/OsBrandStringTests.cs +++ /dev/null @@ -1,70 +0,0 @@ -using BenchmarkDotNet.Environments; -using Xunit; -using Xunit.Abstractions; - -namespace BenchmarkDotNet.Tests.Environments -{ - public class OsBrandStringTests - { - private readonly ITestOutputHelper output; - - public OsBrandStringTests(ITestOutputHelper output) => this.output = output; - - private void Check(string actual, string expected) - { - output.WriteLine("LENGTH : " + actual.Length); - output.WriteLine("ACTUAL : " + actual); - output.WriteLine("EXPECTED : " + expected); - Assert.Equal(expected, actual); - - // The line with OsBrandString is one of the longest lines in the summary. - // When people past in on GitHub, it can be a reason of an ugly horizontal scrollbar. - // To avoid this, we are trying to minimize this line and use the minimum possible number of characters. - // In this test, we check that the length of the OS brand string for typical Windows versions - // is less than 61 characters. - const int maxLength = 61; - Assert.True(actual.Length <= maxLength, $"The brand string name length should be <= {maxLength}"); - } - - [Theory] - [InlineData("6.3.9600", "Windows 8.1 (6.3.9600)")] - [InlineData("10.0.14393", "Windows 10 (10.0.14393/1607/AnniversaryUpdate/Redstone1)")] - public void WindowsIsPrettified(string originalVersion, string prettifiedName) - => Check(OsBrandStringHelper.Prettify("Windows", originalVersion), prettifiedName); - - [Theory] - [InlineData("10.0.10240", 17797, "Windows 10 (10.0.10240.17797/1507/RTM/Threshold1)")] - [InlineData("10.0.10586", 1478, "Windows 10 (10.0.10586.1478/1511/NovemberUpdate/Threshold2)")] - [InlineData("10.0.14393", 2156, "Windows 10 (10.0.14393.2156/1607/AnniversaryUpdate/Redstone1)")] - [InlineData("10.0.15063", 997, "Windows 10 (10.0.15063.997/1703/CreatorsUpdate/Redstone2)")] - [InlineData("10.0.16299", 334, "Windows 10 (10.0.16299.334/1709/FallCreatorsUpdate/Redstone3)")] - [InlineData("10.0.17134", 48, "Windows 10 (10.0.17134.48/1803/April2018Update/Redstone4)")] - [InlineData("10.0.17763", 1, "Windows 10 (10.0.17763.1/1809/October2018Update/Redstone5)")] - [InlineData("10.0.18362", 693, "Windows 10 (10.0.18362.693/1903/May2019Update/19H1)")] - [InlineData("10.0.18363", 657, "Windows 10 (10.0.18363.657/1909/November2019Update/19H2)")] - [InlineData("10.0.19041", 1, "Windows 10 (10.0.19041.1/2004/May2020Update/20H1)")] - [InlineData("10.0.19042", 746, "Windows 10 (10.0.19042.746/20H2/October2020Update)")] - [InlineData("10.0.19043", 964, "Windows 10 (10.0.19043.964/21H1/May2021Update)")] - [InlineData("10.0.19044", 1147, "Windows 10 (10.0.19044.1147/21H2/November2021Update)")] - [InlineData("10.0.19099", 1729, "Windows 10 (10.0.19099.1729)")] - [InlineData("10.0.19045", 0, "Windows 10 (10.0.19045.0/22H2/2022Update)")] - [InlineData("10.0.22000", 348, "Windows 11 (10.0.22000.348/21H2/SunValley)")] - [InlineData("10.0.22518", 1012, "Windows 11 (10.0.22518.1012)")] - [InlineData("10.0.22621", 0, "Windows 11 (10.0.22621.0/22H2/2022Update/SunValley2)")] - [InlineData("10.0.22631", 2428, "Windows 11 (10.0.22631.2428/23H2/2023Update/SunValley3)")] - public void WindowsWithUbrIsPrettified(string originalVersion, int ubr, string prettifiedName) - => Check(OsBrandStringHelper.Prettify("Windows", originalVersion, ubr), prettifiedName); - - [Theory] - [InlineData("macOS 10.12.6 (16G29)", "Darwin 16.7.0", "macOS Sierra 10.12.6 (16G29) [Darwin 16.7.0]")] - [InlineData("macOS 10.13.4 (17E199)", "Darwin 17.5.0", "macOS High Sierra 10.13.4 (17E199) [Darwin 17.5.0]")] - [InlineData("macOS 10.15.4 (19E266)", "Darwin 19.4.0", "macOS Catalina 10.15.4 (19E266) [Darwin 19.4.0]")] - [InlineData("macOS 11.1 (20C69)", "Darwin 20.2.0", "macOS Big Sur 11.1 (20C69) [Darwin 20.2.0]")] - [InlineData("macOS 11.3.1 (20E241)", "Darwin 20.4.0", "macOS Big Sur 11.3.1 (20E241) [Darwin 20.4.0]")] - [InlineData("macOS 12.1 (21C52)", "Darwin 21.2.0", "macOS Monterey 12.1 (21C52) [Darwin 21.2.0]")] - [InlineData("macOS 13.0.1 (22A400)", "Darwin 22.1.0", "macOS Ventura 13.0.1 (22A400) [Darwin 22.1.0]")] - [InlineData("macOS 14.0.0", "Darwin 23.0.0", "macOS Sonoma 14.0.0 [Darwin 23.0.0]")] - public void MacOSXIsPrettified(string systemVersion, string kernelVersion, string prettifiedName) - => Check(OsBrandStringHelper.PrettifyMacOSX(systemVersion, kernelVersion), prettifiedName); - } -} diff --git a/tests/BenchmarkDotNet.Tests/Environments/ProcessorBrandStringTests.cs b/tests/BenchmarkDotNet.Tests/Environments/ProcessorBrandStringTests.cs deleted file mode 100644 index 127c96ca1d..0000000000 --- a/tests/BenchmarkDotNet.Tests/Environments/ProcessorBrandStringTests.cs +++ /dev/null @@ -1,76 +0,0 @@ -using BenchmarkDotNet.Environments; -using BenchmarkDotNet.Portability.Cpu; -using Perfolizer.Horology; -using Xunit; - -namespace BenchmarkDotNet.Tests.Environments -{ - public class ProcessorBrandStringTests - { - [Theory] - [InlineData("Intel(R) Pentium(TM) G4560 CPU @ 3.50GHz", "Intel Pentium G4560 CPU 3.50GHz")] - [InlineData("Intel(R) Core(TM) i7 CPU 970 @ 3.20GHz", "Intel Core i7 CPU 970 3.20GHz (Nehalem)")] // Nehalem/Westmere/Gulftown - [InlineData("Intel(R) Core(TM) i7-920 CPU @ 2.67GHz", "Intel Core i7-920 CPU 2.67GHz (Nehalem)")] - [InlineData("Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz", "Intel Core i7-2600 CPU 3.40GHz (Sandy Bridge)")] - [InlineData("Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "Intel Core i7-3770 CPU 3.40GHz (Ivy Bridge)")] - [InlineData("Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz", "Intel Core i7-4770K CPU 3.50GHz (Haswell)")] - [InlineData("Intel(R) Core(TM) i7-5775R CPU @ 3.30GHz", "Intel Core i7-5775R CPU 3.30GHz (Broadwell)")] - [InlineData("Intel(R) Core(TM) i7-6700HQ CPU @ 2.60GHz", "Intel Core i7-6700HQ CPU 2.60GHz (Skylake)")] - [InlineData("Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz", "Intel Core i7-7700 CPU 3.60GHz (Kaby Lake)")] - [InlineData("Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz ", "Intel Core i7-8650U CPU 1.90GHz (Kaby Lake R)")] - [InlineData("Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz", "Intel Core i7-8700K CPU 3.70GHz (Coffee Lake)")] - public void IntelCoreIsPrettified(string originalName, string prettifiedName) - { - var actual = CpuInfo.FromName(originalName); - Assert.Equal(prettifiedName, ProcessorBrandStringHelper.Prettify(actual)); - } - - [Theory] - [InlineData("Intel(R) Pentium(TM) G4560 CPU @ 3.50GHz", "Intel Pentium G4560 CPU 3.50GHz (Max: 3.70GHz)", 3.7)] - [InlineData("Intel(R) Core(TM) i5-2500 CPU @ 3.30GHz", "Intel Core i5-2500 CPU 3.30GHz (Max: 3.70GHz) (Sandy Bridge)", 3.7)] - [InlineData("Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz", "Intel Core i7-2600 CPU 3.40GHz (Max: 3.70GHz) (Sandy Bridge)", 3.7)] - [InlineData("Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", "Intel Core i7-3770 CPU 3.40GHz (Max: 3.50GHz) (Ivy Bridge)", 3.5)] - [InlineData("Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz", "Intel Core i7-4770K CPU 3.50GHz (Max: 3.60GHz) (Haswell)", 3.6)] - [InlineData("Intel(R) Core(TM) i7-5775R CPU @ 3.30GHz", "Intel Core i7-5775R CPU 3.30GHz (Max: 3.40GHz) (Broadwell)", 3.4)] - public void CoreIsPrettifiedWithDiffFrequencies(string originalName, string prettifiedName, double actualFrequency) - { - var actual = CpuInfo.FromNameAndFrequency(originalName, Frequency.FromGHz(actualFrequency)); - Assert.Equal(prettifiedName, ProcessorBrandStringHelper.Prettify(actual, includeMaxFrequency: true)); - } - - [Theory] - [InlineData("AMD Ryzen 7 2700X Eight-Core Processor", "AMD Ryzen 7 2700X 4.10GHz", 4.1, 8, 16)] - [InlineData("AMD Ryzen 7 2700X Eight-Core Processor", "AMD Ryzen 7 2700X Eight-Core Processor 4.10GHz", 4.1, null, null)] - public void AmdIsPrettifiedWithDiffFrequencies(string originalName, string prettifiedName, double actualFrequency, int? physicalCoreCount, int? logicalCoreCount) - { - var cpuInfo = new CpuInfo( - originalName, - physicalProcessorCount: null, - physicalCoreCount, - logicalCoreCount, - Frequency.FromGHz(actualFrequency), - maxFrequency: null); - - Assert.Equal(prettifiedName, ProcessorBrandStringHelper.Prettify(cpuInfo, includeMaxFrequency: true)); - } - - [Theory] - [InlineData("8130U", "Kaby Lake")] - [InlineData("9900K", "Coffee Lake")] - [InlineData("8809G", "Kaby Lake G")] - public void IntelCoreMicroarchitecture(string modelNumber, string microarchitecture) - { - Assert.Equal(microarchitecture, ProcessorBrandStringHelper.ParseIntelCoreMicroarchitecture(modelNumber)); - } - - [Theory] - [InlineData("", "Unknown processor")] - [InlineData(null, "Unknown processor")] - public void UnknownProcessorDoesNotThrow(string? originalName, string prettifiedName) - { - var cpuInfo = new CpuInfo(originalName, null, null, null, null); - - Assert.Equal(prettifiedName, ProcessorBrandStringHelper.Prettify(cpuInfo, includeMaxFrequency: true)); - } - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Exporters/CommonExporterVerifyTests.cs b/tests/BenchmarkDotNet.Tests/Exporters/CommonExporterVerifyTests.cs index 074bbf50ab..5ab48b7a30 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/CommonExporterVerifyTests.cs +++ b/tests/BenchmarkDotNet.Tests/Exporters/CommonExporterVerifyTests.cs @@ -12,6 +12,7 @@ using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Tests.Builders; +using BenchmarkDotNet.Tests.Infra; using BenchmarkDotNet.Tests.Mocks; using BenchmarkDotNet.Tests.Reports; using JetBrains.Annotations; @@ -62,7 +63,7 @@ [new Metric(new FakeMetricDescriptor("CacheMisses", "Hardware counter 'CacheMiss logger); } - var settings = VerifySettingsFactory.Create(); + var settings = VerifyHelper.Create(); settings.UseTextForParameters(GetName(cultureInfo)); return Verifier.Verify(logger.GetLog(), settings); } diff --git a/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs b/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs index fca08d0c0e..8da0a0e24e 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs +++ b/tests/BenchmarkDotNet.Tests/Exporters/MarkdownExporterVerifyTests.cs @@ -10,12 +10,11 @@ using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Tests.Builders; +using BenchmarkDotNet.Tests.Infra; using BenchmarkDotNet.Validators; using JetBrains.Annotations; using VerifyXunit; using Xunit; -using BenchmarkDotNet.Columns; -using System.Reflection; namespace BenchmarkDotNet.Tests.Exporters { @@ -42,8 +41,9 @@ public Task GroupExporterTest(Type benchmarkType) var logger = new AccumulationLogger(); logger.WriteLine("=== " + benchmarkType.Name + " ==="); + var exporter = MarkdownExporter.Mock; - var summary = MockFactory.CreateSummary(benchmarkType, benchmarkType.GetCustomAttribute()?.Config.GetColumnHidingRules().ToArray() ?? []); + var summary = MockFactory.CreateSummary(benchmarkType); exporter.ExportToLog(summary, logger); var validator = BaselineValidator.FailOnError; @@ -53,7 +53,7 @@ public Task GroupExporterTest(Type benchmarkType) foreach (var error in errors) logger.WriteLineError("* " + error.Message); - var settings = VerifySettingsFactory.Create(); + var settings = VerifyHelper.Create(); settings.UseTextForParameters(benchmarkType.Name); return Verifier.Verify(logger.GetLog(), settings); } @@ -220,8 +220,8 @@ [Benchmark] public void Bar() { } [SimpleJob(id: "Job1", baseline: true), SimpleJob(id: "Job2")] public class MethodJobBaseline_MethodsJobs { - [Benchmark(Baseline = true)] public void Foo() { } - [Benchmark] public void Bar() { } + [Benchmark(Baseline = true)] public void Foo() {} + [Benchmark] public void Bar() {} } [RankColumn, LogicalGroupColumn, BaselineColumn] @@ -230,8 +230,8 @@ public class MethodJobBaseline_MethodsJobsParams { [Params(2, 10), UsedImplicitly] public int Param; - [Benchmark(Baseline = true)] public void Foo() { } - [Benchmark] public void Bar() { } + [Benchmark(Baseline = true)] public void Foo() {} + [Benchmark] public void Bar() {} } /* Invalid */ @@ -239,16 +239,16 @@ [Benchmark] public void Bar() { } [RankColumn, LogicalGroupColumn, BaselineColumn] public class Invalid_TwoMethodBaselines { - [Benchmark(Baseline = true)] public void Foo() { } - [Benchmark(Baseline = true)] public void Bar() { } + [Benchmark(Baseline = true)] public void Foo() {} + [Benchmark(Baseline = true)] public void Bar() {} } [RankColumn, LogicalGroupColumn, BaselineColumn] [SimpleJob(id: "Job1", baseline: true), SimpleJob(id: "Job2", baseline: true)] public class Invalid_TwoJobBaselines { - [Benchmark] public void Foo() { } - [Benchmark] public void Bar() { } + [Benchmark] public void Foo() {} + [Benchmark] public void Bar() {} } /* Escape Params */ @@ -261,13 +261,6 @@ public class Escape_ParamsAndArguments [Benchmark] public void Foo(char charArg) {} [Benchmark] public void Bar() {} } - - /* Hide Column */ - [HideColumns(Column.StdDev)] - public class HideColumns_TableMarkDown - { - [Benchmark] public void Foo() { } - } } } } diff --git a/tests/BenchmarkDotNet.Tests/Infra/TestOutputPresenter.cs b/tests/BenchmarkDotNet.Tests/Infra/TestOutputPresenter.cs new file mode 100644 index 0000000000..7ed360c266 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Infra/TestOutputPresenter.cs @@ -0,0 +1,9 @@ +using Perfolizer.Presenting; +using Xunit.Abstractions; + +namespace BenchmarkDotNet.Tests.Infra; + +public class TestOutputPresenter(ITestOutputHelper output) : BufferedPresenter +{ + protected override void Flush(string text) => output.WriteLine(text.TrimEnd('\n', '\r')); +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Infra/VerifyHelper.cs b/tests/BenchmarkDotNet.Tests/Infra/VerifyHelper.cs new file mode 100644 index 0000000000..9d563d8ca6 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Infra/VerifyHelper.cs @@ -0,0 +1,16 @@ +using VerifyTests; + +namespace BenchmarkDotNet.Tests.Infra; + +public static class VerifyHelper +{ + public static VerifySettings Create(string? typeName = null) + { + var result = new VerifySettings(); + result.UseDirectory("VerifiedFiles"); + result.DisableDiff(); + if (typeName != null) + result.UseTypeName(typeName); + return result; + } +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/LightJsonSerializerTests.cs b/tests/BenchmarkDotNet.Tests/LightJsonSerializerTests.cs new file mode 100644 index 0000000000..16ef22efed --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/LightJsonSerializerTests.cs @@ -0,0 +1,56 @@ +using System.Collections.Generic; +using System.Linq; +using SimpleJson; +using Xunit; + +namespace BenchmarkDotNet.Tests +{ + public class LightJsonSerializerTests + { + [Theory] + [InlineData(10.0, "test", double.NaN)] + public void SimpleJson_ReplaceUnsupportedNumericValues_Smoke(object val1, object val2, object val3) + { + //Arrange + var data = new List() + { + val1, val2, val3 + }; + + //Act + for (int i = 0; i < data.Count; i++) + { + data[i] = SimpleJsonSerializer.ReplaceUnsupportedNumericValues(data[i]); + } + + //Assert + Assert.Equal(val1, data[0]); + Assert.Equal(val2, data[1]); + Assert.Equal(SimpleJsonSerializer.JSON_EMPTY_STRING, data[2]); + } + + + [Fact] + public void SimpleJson_SerializeObjectWithUnsupportedNumericValues_ReturnsValidJson() + { + //Arrange + var data = new Dictionary + { + { "Statistic1", float.NaN}, + { "Statistic2", float.NegativeInfinity }, + { "Statistic3", float.PositiveInfinity }, + { "Statistic4", double.NaN}, + { "Statistic5", double.NegativeInfinity }, + { "Statistic6", double.PositiveInfinity } + }; + + //Act + string json = SimpleJsonSerializer.SerializeObject(data); + + //Assert + Assert.True(SimpleJsonSerializer.TryDeserializeObject(json, out var obj)); + var values = (obj as SimpleJson.JsonObject).Select(x => x.Value); + Assert.True(values.All(x => x.Equals(string.Empty))); + } + } +} diff --git a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs index edbaba0e3a..bbe715d660 100644 --- a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs +++ b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs @@ -18,6 +18,7 @@ using Perfolizer.Horology; using Perfolizer.Metrology; using static BenchmarkDotNet.Reports.SummaryTable.SummaryTableColumn; +using Measurement = BenchmarkDotNet.Reports.Measurement; using MethodInfo = System.Reflection.MethodInfo; namespace BenchmarkDotNet.Tests.Mocks @@ -37,8 +38,8 @@ public static Summary CreateSummary(Type benchmarkType, params IColumnHidingRule TestCultureInfo.Instance, ImmutableArray.Empty, ImmutableArray.Create(columHidingRules)); - } - + } + public static Summary CreateSummaryWithBiasedDistribution(Type benchmarkType, int min, int median, int max, int n) { var runInfo = BenchmarkConverter.TypeToBenchmarks(benchmarkType); @@ -145,7 +146,7 @@ private static BenchmarkReport CreateReportWithBiasedDistribution(BenchmarkCase { var buildResult = BuildResult.Success(GenerateResult.Success(ArtifactsPaths.Empty, Array.Empty())); bool isFoo = benchmarkCase.Descriptor.WorkloadMethodDisplayInfo == "Foo"; - bool isBar = benchmarkCase.Descriptor.WorkloadMethodDisplayInfo == "Bar"; + bool isBar = benchmarkCase.Descriptor.WorkloadMethodDisplayInfo == "Bar"; var measurements = from i in Enumerable.Range(0, Math.Max(1, n / 9)) from m in isFoo ? new[] { diff --git a/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdMock.cs b/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdMock.cs new file mode 100644 index 0000000000..e850737169 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdMock.cs @@ -0,0 +1,13 @@ +using BenchmarkDotNet.Properties; +using Perfolizer.Phd.Dto; + +namespace BenchmarkDotNet.Tests.Phd.Infra; + +public static class PhdMock +{ + public static readonly PhdEngine Engine = new PhdEngine + { + Name = BenchmarkDotNetInfo.BenchmarkDotNetCaption, + Version = "0.1729.0-mock" + }.SetDisplay(); +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdTestExtensions.cs b/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdTestExtensions.cs new file mode 100644 index 0000000000..a3db74c376 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/Infra/PhdTestExtensions.cs @@ -0,0 +1,22 @@ +using Perfolizer.Metrology; +using Perfolizer.Phd.Base; + +namespace BenchmarkDotNet.Tests.Phd.Infra; + +public static class PhdTestExtensions +{ + public static PhdEntry AddMetrics(this PhdEntry entry, params string[] metrics) + { + for (int i = 0; i < metrics.Length; i++) + { + var measurement = Measurement.Parse(metrics[i]); + entry.Add(new PhdEntry + { + IterationIndex = i, + Value = measurement.NominalValue, + Unit = measurement.Unit + }); + } + return entry; + } +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/PhdTests.cs b/tests/BenchmarkDotNet.Tests/Phd/PhdTests.cs new file mode 100644 index 0000000000..fc77d1033a --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/PhdTests.cs @@ -0,0 +1,179 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using BenchmarkDotNet.Environments; +using BenchmarkDotNet.Jobs; +using BenchmarkDotNet.Phd; +using BenchmarkDotNet.Tests.Builders; +using BenchmarkDotNet.Tests.Infra; +using BenchmarkDotNet.Tests.Phd.Infra; +using JetBrains.Annotations; +using Perfolizer.Json; +using Perfolizer.Phd.Base; +using Perfolizer.Phd.Dto; +using Perfolizer.Phd.Presenting; +using Perfolizer.Phd.Tables; +using Perfolizer.Presenting; +using VerifyXunit; +using Xunit; +using Xunit.Abstractions; + +namespace BenchmarkDotNet.Tests.Phd; + +[UsesVerify] +public class PhdTests(ITestOutputHelper output) +{ + [Theory] + [MemberData(nameof(EntryDataKeys))] + public Task PhdIndexTest(string key) => VerifyString(key, new PhdIndex(EntryDataMap[key]).Dump()); + + [Theory] + [MemberData(nameof(EntryDataKeys))] + public Task PhdTableTest(string key) + { + var entry = EntryDataMap[key]; + var table = new PhdTable(entry); + var presenter = new StringPresenter(); + new PhdMarkdownTablePresenter(presenter).Present(table, new PhdTableStyle()); + string json = LightJsonSerializer.Serialize(entry, new LightJsonSettings { Indent = true }); + return VerifyString(key, presenter.Dump() + "\n" + json); + } + + private static readonly IDictionary EntryDataMap = new Dictionary + { + { + "default01", Root().Add( + Benchmark("Foo", "10ns", "11ns", "12ns"), + Benchmark("Bar", "200ns", "201ns", "202ns") + ) + }, + { + "default02", Root().Add( + Job(RuntimeMoniker.Net481).Add( + Benchmark("Foo", "10ns", "11ns", "12ns"), + Benchmark("Bar", "20ns", "21ns", "22ns")), + Job(RuntimeMoniker.Net70).Add( + Benchmark("Foo", "30ns", "31ns", "32ns"), + Benchmark("Bar", "40ns", "41ns", "42ns"))) + }, + { + "default03", Root().Add( + Job(RuntimeMoniker.Net70, Jit.RyuJit).Add( + Benchmark("Foo", "30ns", "31ns", "32ns"), + Benchmark("Bar", "40ns", "41ns", "42ns"))) + }, + { + "default04", Root().Add( + Job(RuntimeMoniker.Net481, Jit.LegacyJit).Add( + Benchmark("Foo", "10ns", "11ns", "12ns"), + Benchmark("Bar", "20ns", "21ns", "22ns")), + Job(RuntimeMoniker.Net70, Jit.RyuJit).Add( + Benchmark("Foo", "30ns", "31ns", "32ns"), + Benchmark("Bar", "40ns", "41ns", "42ns"))) + }, + { + "default05", Root().Add( + Enumerable.Range(0, 20).Select(index => + Job((RuntimeMoniker)index, Jit.RyuJit, index).Add( + Benchmark("Foo", index * 10 + 1 + "ns", index * 10 + 2 + "ns", index * 10 + 3 + "ns"), + Benchmark("Bar", index * 10 + 6 + "ns", index * 10 + 7 + "ns", index * 10 + 8 + "ns") + )).ToArray()) + }, + { + "sort01", new PhdEntry + { + Meta = new PhdMeta + { + Table = new PhdTableConfig + { + ColumnDefinitions = + { + new PhdColumnDefinition(".benchmark.method"), + new PhdColumnDefinition("=average") + }, + SortPolicies = + [ + new PhdSortPolicy("=average", PhdSortDirection.Descending) + ] + } + } + }.Add(Benchmark("Foo", "10ms"), Benchmark("Bar", "20ms")) + }, + { + "params01", new PhdEntry + { + Meta = new PhdMeta + { + Table = new PhdTableConfig + { + ColumnDefinitions = + { + new PhdColumnDefinition(".benchmark.method"), + new PhdColumnDefinition(".parameters.values"), + new PhdColumnDefinition("=average") + } + } + } + }.Add( + new PhdEntry + { + Parameters = new PhdParameters + { + Values = { { "A", 1 }, { "B", 2 } } + } + }.Add(Benchmark("Foo", "10ms"))).Add( + new PhdEntry + { + Parameters = new PhdParameters + { + Values = { { "A", 10 }, { "B", 20 } } + } + }.Add(Benchmark("Bar", "20ms"))) + } + }; + + [UsedImplicitly] public static TheoryData EntryDataKeys = TheoryDataHelper.Create(EntryDataMap.Keys); + + private static PhdEntry Root() => new PhdEntry + { + Meta = new PhdMeta + { + Table = new PhdTableConfig + { + ColumnDefinitions = + [ + new PhdColumnDefinition(".engine") { Cloud = "primary", IsSelfExplanatory = true }, + new PhdColumnDefinition(".host.os") { Cloud = "primary", IsSelfExplanatory = true }, + new PhdColumnDefinition(".host.cpu") { Cloud = "primary", IsSelfExplanatory = true }, + new PhdColumnDefinition(".benchmark") { Cloud = "secondary" }, + new PhdColumnDefinition(".job") { Cloud = "secondary", Compressed = true }, + new PhdColumnDefinition("=average"), + new PhdColumnDefinition("=spread") + ] + } + }, + Engine = PhdMock.Engine, + Host = new HostEnvironmentInfoBuilder().Build().ToPhd() + }; + + private static PhdEntry Job(RuntimeMoniker? runtime = null, Jit? jit = null, int? affinity = null) => new PhdEntry + { + Job = new PhdJob + { + Environment = new BdnEnvironment { Runtime = runtime, Jit = jit, Affinity = affinity } + } + }; + + private static PhdEntry Benchmark(string name, params string[] metrics) => new PhdEntry + { + Benchmark = new BdnBenchmark { Type = "Bench", Method = name } + }.AddMetrics(metrics); + + private Task VerifyString(string key, string content) + { + output.WriteLine(content); + var settings = VerifyHelper.Create("Phd"); + settings.UseParameters(key); + return Verifier.Verify(content, settings); + } +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=01.verified.txt new file mode 100644 index 0000000000..6624fad6e3 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=01.verified.txt @@ -0,0 +1,158 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.architecture + .host.cpu.display + .host.cpu.logicalCoreCount + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.os.kernelVersion + .host.os.name + .host.os.version + .host.runtimeVersion + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.maxAnchorLength + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=02.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=02.verified.txt new file mode 100644 index 0000000000..4ab3317f6d --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=02.verified.txt @@ -0,0 +1,333 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.architecture + .host.cpu.display + .host.cpu.logicalCoreCount + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.os.kernelVersion + .host.os.name + .host.os.version + .host.runtimeVersion + .job + .job.environment + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.maxAnchorLength + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=03.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=03.verified.txt new file mode 100644 index 0000000000..5d1c711a7f --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=03.verified.txt @@ -0,0 +1,211 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.architecture + .host.cpu.display + .host.cpu.logicalCoreCount + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.os.kernelVersion + .host.os.name + .host.os.version + .host.runtimeVersion + .job + .job.environment + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.maxAnchorLength + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=04.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=04.verified.txt new file mode 100644 index 0000000000..098f362b9c --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=04.verified.txt @@ -0,0 +1,340 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.architecture + .host.cpu.display + .host.cpu.logicalCoreCount + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.os.kernelVersion + .host.os.name + .host.os.version + .host.runtimeVersion + .job + .job.environment + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.maxAnchorLength + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=05.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=05.verified.txt new file mode 100644 index 0000000000..03890a5a5c --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=05.verified.txt @@ -0,0 +1,2723 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.architecture + .host.cpu.display + .host.cpu.logicalCoreCount + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.os.kernelVersion + .host.os.name + .host.os.version + .host.runtimeVersion + .job + .job.environment + .job.environment.affinity + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.maxAnchorLength + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry7] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry8] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry9] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry10] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry11] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry12] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry13] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry14] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry15] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry16] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry17] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry18] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry19] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry20] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry21] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry22] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry23] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry24] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry25] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry26] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry27] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry28] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry29] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry30] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry31] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry32] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry33] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry34] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry35] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry36] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry37] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry38] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry39] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry40] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry41] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry42] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry43] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry44] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry45] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry46] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry47] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry48] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry49] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry50] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry51] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry52] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry53] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry54] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry55] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry56] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry57] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry58] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry59] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry60] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 1000000000 + .host.configuration = RELEASE + .host.cpu = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.architecture = Arm64 + .host.cpu.display = Apple M1 Max, 1 CPU, 10 logical and 10 physical cores + .host.cpu.logicalCoreCount = 10 + .host.cpu.physicalCoreCount = 10 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = Apple M1 Max + .host.dotNetSdkVersion = 8.0.100 + .host.hardwareTimerKind = Unknown + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.display = macOS Sonoma 14.2.1 (23C71) [Darwin 23.2.0] + .host.os.kernelVersion = Darwin 23.2.0 + .host.os.name = macOS + .host.os.version = macOS 14.2.1 (23C71) + .host.runtimeVersion = .NET 8.0.0 (8.0.23.53103) + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.maxAnchorLength = 20 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default01.verified.txt new file mode 100644 index 0000000000..a61b72aae6 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default01.verified.txt @@ -0,0 +1,146 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.logicalCoreCount + .host.cpu.maxFrequencyHz + .host.cpu.minFrequencyHz + .host.cpu.nominalFrequencyHz + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.runtimeVersion + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default02.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default02.verified.txt new file mode 100644 index 0000000000..82bab678ed --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default02.verified.txt @@ -0,0 +1,309 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.logicalCoreCount + .host.cpu.maxFrequencyHz + .host.cpu.minFrequencyHz + .host.cpu.nominalFrequencyHz + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.runtimeVersion + .job + .job.environment + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default03.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default03.verified.txt new file mode 100644 index 0000000000..64313400a1 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default03.verified.txt @@ -0,0 +1,196 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.logicalCoreCount + .host.cpu.maxFrequencyHz + .host.cpu.minFrequencyHz + .host.cpu.nominalFrequencyHz + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.runtimeVersion + .job + .job.environment + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default04.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default04.verified.txt new file mode 100644 index 0000000000..726b0d163e --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default04.verified.txt @@ -0,0 +1,316 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.logicalCoreCount + .host.cpu.maxFrequencyHz + .host.cpu.minFrequencyHz + .host.cpu.nominalFrequencyHz + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.runtimeVersion + .job + .job.environment + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = LegacyJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default05.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default05.verified.txt new file mode 100644 index 0000000000..e66884a4e1 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=default05.verified.txt @@ -0,0 +1,2537 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .engine + .engine.display + .engine.name + .engine.version + .host + .host.chronometerFrequency + .host.configuration + .host.cpu + .host.cpu.logicalCoreCount + .host.cpu.maxFrequencyHz + .host.cpu.minFrequencyHz + .host.cpu.nominalFrequencyHz + .host.cpu.physicalCoreCount + .host.cpu.physicalProcessorCount + .host.cpu.processorName + .host.dotNetSdkVersion + .host.hardwareTimerKind + .host.hasAttachedDebugger + .host.hasRyuJit + .host.os + .host.os.display + .host.runtimeVersion + .job + .job.environment + .job.environment.affinity + .job.environment.jit + .job.environment.runtime + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry3] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 0 + .job.environment.jit = RyuJit + .job.environment.runtime = HostProcess + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry4] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry5] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry6] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 1 + .job.environment.jit = RyuJit + .job.environment.runtime = NotRecognized + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry7] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry8] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry9] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 2 + .job.environment.jit = RyuJit + .job.environment.runtime = Mono + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry10] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry11] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry12] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 3 + .job.environment.jit = RyuJit + .job.environment.runtime = Net461 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry13] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry14] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry15] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 4 + .job.environment.jit = RyuJit + .job.environment.runtime = Net462 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry16] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry17] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry18] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 5 + .job.environment.jit = RyuJit + .job.environment.runtime = Net47 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry19] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry20] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry21] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 6 + .job.environment.jit = RyuJit + .job.environment.runtime = Net471 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry22] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry23] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry24] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 7 + .job.environment.jit = RyuJit + .job.environment.runtime = Net472 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry25] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry26] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry27] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 8 + .job.environment.jit = RyuJit + .job.environment.runtime = Net48 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry28] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry29] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry30] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 9 + .job.environment.jit = RyuJit + .job.environment.runtime = Net481 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry31] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry32] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry33] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 10 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp20 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry34] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry35] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry36] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 11 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp21 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry37] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry38] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry39] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 12 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp22 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry40] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry41] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry42] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 13 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp30 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry43] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry44] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry45] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 14 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp31 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry46] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry47] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry48] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 15 + .job.environment.jit = RyuJit + .job.environment.runtime = NetCoreApp50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry49] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry50] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry51] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 16 + .job.environment.jit = RyuJit + .job.environment.runtime = Net50 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry52] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry53] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry54] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 17 + .job.environment.jit = RyuJit + .job.environment.runtime = Net60 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry55] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry56] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry57] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 18 + .job.environment.jit = RyuJit + .job.environment.runtime = Net70 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry58] + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry59] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry60] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .engine = BenchmarkDotNet v0.1729.0-mock + .engine.display = BenchmarkDotNet v0.1729.0-mock + .engine.name = BenchmarkDotNet + .engine.version = 0.1729.0-mock + .host = BenchmarkDotNet.Phd.BdnHost + .host.chronometerFrequency = 2531248 + .host.configuration = CONFIGURATION + .host.cpu = MockIntel Core i7-6700HQ CPU 2.60GHz (Max: 3.10GHz), 1 CPU, 8 logical and 4 physical cores + .host.cpu.logicalCoreCount = 8 + .host.cpu.maxFrequencyHz = 3100000000 + .host.cpu.minFrequencyHz = 3100000000 + .host.cpu.nominalFrequencyHz = 3100000000 + .host.cpu.physicalCoreCount = 4 + .host.cpu.physicalProcessorCount = 1 + .host.cpu.processorName = MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz + .host.dotNetSdkVersion = 1.0.x.mock + .host.hardwareTimerKind = Tsc + .host.hasAttachedDebugger = False + .host.hasRyuJit = True + .host.os = Microsoft Windows NT 10.0.x.mock + .host.os.display = Microsoft Windows NT 10.0.x.mock + .host.runtimeVersion = Clr 4.0.x.mock + .job = Perfolizer.Phd.Dto.PhdJob + .job.environment = BenchmarkDotNet.Phd.BdnEnvironment + .job.environment.affinity = 19 + .job.environment.jit = RyuJit + .job.environment.runtime = Net80 + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 7 + .meta.table.columnDefinitions.count = 7 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=params01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=params01.verified.txt new file mode 100644 index 0000000000..c07e5ed76e --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=params01.verified.txt @@ -0,0 +1,102 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + .parameters + .parameters.values + .parameters.values.a + .parameters.values.b + +[Entry0] + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 3 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 +[Entry1] + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 3 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 + .parameters = Perfolizer.Phd.Dto.PhdParameters + .parameters.values = System.Collections.Generic.Dictionary`2[System.String,System.Object] + .parameters.values.a = 1 + .parameters.values.b = 2 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 3 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 + .parameters = Perfolizer.Phd.Dto.PhdParameters + .parameters.values = System.Collections.Generic.Dictionary`2[System.String,System.Object] + .parameters.values.a = 1 + .parameters.values.b = 2 +[Entry3] + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 3 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 + .parameters = Perfolizer.Phd.Dto.PhdParameters + .parameters.values = System.Collections.Generic.Dictionary`2[System.String,System.Object] + .parameters.values.a = 10 + .parameters.values.b = 20 +[Entry4] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 3 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 0 + .meta.table.sortPolicies.count = 0 + .parameters = Perfolizer.Phd.Dto.PhdParameters + .parameters.values = System.Collections.Generic.Dictionary`2[System.String,System.Object] + .parameters.values.a = 10 + .parameters.values.b = 20 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=sort01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=sort01.verified.txt new file mode 100644 index 0000000000..796452a19e --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdIndexTest_key=sort01.verified.txt @@ -0,0 +1,58 @@ +[Keys] + .benchmark + .benchmark.method + .benchmark.type + .meta + .meta.table + .meta.table.columnDefinitions + .meta.table.columnDefinitions.capacity + .meta.table.columnDefinitions.count + .meta.table.filters + .meta.table.filters.capacity + .meta.table.filters.count + .meta.table.sortPolicies + .meta.table.sortPolicies.capacity + .meta.table.sortPolicies.count + +[Entry0] + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 2 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 4 + .meta.table.sortPolicies.count = 1 +[Entry1] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Foo + .benchmark.type = Bench + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 2 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 4 + .meta.table.sortPolicies.count = 1 +[Entry2] + .benchmark = BenchmarkDotNet.Phd.BdnBenchmark + .benchmark.method = Bar + .benchmark.type = Bench + .meta = Perfolizer.Phd.Base.PhdMeta + .meta.table = Perfolizer.Phd.Tables.PhdTableConfig + .meta.table.columnDefinitions = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdColumnDefinition] + .meta.table.columnDefinitions.capacity = 4 + .meta.table.columnDefinitions.count = 2 + .meta.table.filters = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdFilter] + .meta.table.filters.capacity = 0 + .meta.table.filters.count = 0 + .meta.table.sortPolicies = System.Collections.Generic.List`1[Perfolizer.Phd.Tables.PhdSortPolicy] + .meta.table.sortPolicies.capacity = 4 + .meta.table.sortPolicies.count = 1 \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default01.verified.txt new file mode 100644 index 0000000000..1624b93cfd --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default01.verified.txt @@ -0,0 +1,128 @@ +BenchmarkDotNet v0.1729.0-mock, Microsoft Windows NT 10.0.x.mock +MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz, 1, 4, 8, 3100000000, 3100000000, 3100000000 + +Type = Bench + +| Method | Average | Spread | +|:-------|---------:|--------:| +| Foo | 11.0 ns | 0.81 ns | +| Bar | 201.0 ns | 0.81 ns | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".engine", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.os", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.cpu", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".benchmark", + "cloud": "secondary" + }, + { + "selector": ".job", + "cloud": "secondary", + "compressed": true + }, + { + "selector": "=average" + }, + { + "selector": "=spread" + } + ] + } + }, + "engine": { + "name": "BenchmarkDotNet", + "version": "0.1729.0-mock", + "display": "BenchmarkDotNet v0.1729.0-mock" + }, + "host": { + "runtimeVersion": "Clr 4.0.x.mock", + "hasAttachedDebugger": false, + "hasRyuJit": true, + "configuration": "CONFIGURATION", + "dotNetSdkVersion": "1.0.x.mock", + "chronometerFrequency": 2531248, + "hardwareTimerKind": "Tsc", + "os": { + "display": "Microsoft Windows NT 10.0.x.mock" + }, + "cpu": { + "processorName": "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + "physicalProcessorCount": 1, + "physicalCoreCount": 4, + "logicalCoreCount": 8, + "nominalFrequencyHz": 3100000000, + "minFrequencyHz": 3100000000, + "maxFrequencyHz": 3100000000 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 10, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 11, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 12, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 200, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 201, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 202, + "unit": "ns" + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default02.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default02.verified.txt new file mode 100644 index 0000000000..265b061463 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default02.verified.txt @@ -0,0 +1,202 @@ +BenchmarkDotNet v0.1729.0-mock, Microsoft Windows NT 10.0.x.mock +MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz, 1, 4, 8, 3100000000, 3100000000, 3100000000 + +Type = Bench + +| Method | Runtime | Average | Spread | +|:-------|:--------|--------:|--------:| +| Foo | Net481 | 11.0 ns | 0.81 ns | +| Bar | Net481 | 21.0 ns | 0.81 ns | +| Foo | Net70 | 31.0 ns | 0.81 ns | +| Bar | Net70 | 41.0 ns | 0.81 ns | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".engine", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.os", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.cpu", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".benchmark", + "cloud": "secondary" + }, + { + "selector": ".job", + "cloud": "secondary", + "compressed": true + }, + { + "selector": "=average" + }, + { + "selector": "=spread" + } + ] + } + }, + "engine": { + "name": "BenchmarkDotNet", + "version": "0.1729.0-mock", + "display": "BenchmarkDotNet v0.1729.0-mock" + }, + "host": { + "runtimeVersion": "Clr 4.0.x.mock", + "hasAttachedDebugger": false, + "hasRyuJit": true, + "configuration": "CONFIGURATION", + "dotNetSdkVersion": "1.0.x.mock", + "chronometerFrequency": 2531248, + "hardwareTimerKind": "Tsc", + "os": { + "display": "Microsoft Windows NT 10.0.x.mock" + }, + "cpu": { + "processorName": "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + "physicalProcessorCount": 1, + "physicalCoreCount": 4, + "logicalCoreCount": 8, + "nominalFrequencyHz": 3100000000, + "minFrequencyHz": 3100000000, + "maxFrequencyHz": 3100000000 + } + } + }, + "children": [ + { + "attributes": { + "job": { + "environment": { + "runtime": "net481" + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 10, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 11, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 12, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 20, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 21, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 22, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net70" + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 30, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 31, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 32, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 40, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 41, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 42, + "unit": "ns" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default03.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default03.verified.txt new file mode 100644 index 0000000000..f41fc74493 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default03.verified.txt @@ -0,0 +1,140 @@ +BenchmarkDotNet v0.1729.0-mock, Microsoft Windows NT 10.0.x.mock +MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz, 1, 4, 8, 3100000000, 3100000000, 3100000000 + +Type = Bench, Runtime = Net70, Jit = RyuJit + +| Method | Average | Spread | +|:-------|--------:|--------:| +| Foo | 31.0 ns | 0.81 ns | +| Bar | 41.0 ns | 0.81 ns | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".engine", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.os", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.cpu", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".benchmark", + "cloud": "secondary" + }, + { + "selector": ".job", + "cloud": "secondary", + "compressed": true + }, + { + "selector": "=average" + }, + { + "selector": "=spread" + } + ] + } + }, + "engine": { + "name": "BenchmarkDotNet", + "version": "0.1729.0-mock", + "display": "BenchmarkDotNet v0.1729.0-mock" + }, + "host": { + "runtimeVersion": "Clr 4.0.x.mock", + "hasAttachedDebugger": false, + "hasRyuJit": true, + "configuration": "CONFIGURATION", + "dotNetSdkVersion": "1.0.x.mock", + "chronometerFrequency": 2531248, + "hardwareTimerKind": "Tsc", + "os": { + "display": "Microsoft Windows NT 10.0.x.mock" + }, + "cpu": { + "processorName": "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + "physicalProcessorCount": 1, + "physicalCoreCount": 4, + "logicalCoreCount": 8, + "nominalFrequencyHz": 3100000000, + "minFrequencyHz": 3100000000, + "maxFrequencyHz": 3100000000 + } + } + }, + "children": [ + { + "attributes": { + "job": { + "environment": { + "runtime": "net70", + "jit": "ryuJit" + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 30, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 31, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 32, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 40, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 41, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 42, + "unit": "ns" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default04.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default04.verified.txt new file mode 100644 index 0000000000..e389ad76a9 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default04.verified.txt @@ -0,0 +1,207 @@ +BenchmarkDotNet v0.1729.0-mock, Microsoft Windows NT 10.0.x.mock +MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz, 1, 4, 8, 3100000000, 3100000000, 3100000000 + +Type = Bench + +@Net481LegacyJit: Runtime = Net481, Jit = LegacyJit +@Net70RyuJit: Runtime = Net70, Jit = RyuJit + +| Method | Job | Average | Spread | +|:-------|:----------------|--------:|--------:| +| Foo | Net481LegacyJit | 11.0 ns | 0.81 ns | +| Bar | Net481LegacyJit | 21.0 ns | 0.81 ns | +| Foo | Net70RyuJit | 31.0 ns | 0.81 ns | +| Bar | Net70RyuJit | 41.0 ns | 0.81 ns | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".engine", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.os", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.cpu", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".benchmark", + "cloud": "secondary" + }, + { + "selector": ".job", + "cloud": "secondary", + "compressed": true + }, + { + "selector": "=average" + }, + { + "selector": "=spread" + } + ] + } + }, + "engine": { + "name": "BenchmarkDotNet", + "version": "0.1729.0-mock", + "display": "BenchmarkDotNet v0.1729.0-mock" + }, + "host": { + "runtimeVersion": "Clr 4.0.x.mock", + "hasAttachedDebugger": false, + "hasRyuJit": true, + "configuration": "CONFIGURATION", + "dotNetSdkVersion": "1.0.x.mock", + "chronometerFrequency": 2531248, + "hardwareTimerKind": "Tsc", + "os": { + "display": "Microsoft Windows NT 10.0.x.mock" + }, + "cpu": { + "processorName": "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + "physicalProcessorCount": 1, + "physicalCoreCount": 4, + "logicalCoreCount": 8, + "nominalFrequencyHz": 3100000000, + "minFrequencyHz": 3100000000, + "maxFrequencyHz": 3100000000 + } + } + }, + "children": [ + { + "attributes": { + "job": { + "environment": { + "runtime": "net481", + "jit": "legacyJit" + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 10, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 11, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 12, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 20, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 21, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 22, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net70", + "jit": "ryuJit" + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 30, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 31, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 32, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 40, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 41, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 42, + "unit": "ns" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default05.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default05.verified.txt new file mode 100644 index 0000000000..f31ad01f1a --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=default05.verified.txt @@ -0,0 +1,1397 @@ +BenchmarkDotNet v0.1729.0-mock, Microsoft Windows NT 10.0.x.mock +MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz, 1, 4, 8, 3100000000, 3100000000, 3100000000 + +Type = Bench, Jit = RyuJit + +@HostProcess_0: Runtime = HostProcess, Affinity = 0 +@NotRecognized_1: Runtime = NotRecognized, Affinity = 1 +@Mono_2: Runtime = Mono, Affinity = 2 +@Net461_3: Runtime = Net461, Affinity = 3 +@Net462_4: Runtime = Net462, Affinity = 4 +@Net47_5: Runtime = Net47, Affinity = 5 +@Net471_6: Runtime = Net471, Affinity = 6 +@Net472_7: Runtime = Net472, Affinity = 7 +@Net48_8: Runtime = Net48, Affinity = 8 +@Net481_9: Runtime = Net481, Affinity = 9 +@NetCoreApp20_10: Runtime = NetCoreApp20, Affinity = 10 +@NetCoreApp21_11: Runtime = NetCoreApp21, Affinity = 11 +@NetCoreApp22_12: Runtime = NetCoreApp22, Affinity = 12 +@NetCoreApp30_13: Runtime = NetCoreApp30, Affinity = 13 +@NetCoreApp31_14: Runtime = NetCoreApp31, Affinity = 14 +@NetCoreApp50_15: Runtime = NetCoreApp50, Affinity = 15 +@Net50_16: Runtime = Net50, Affinity = 16 +@Net60_17: Runtime = Net60, Affinity = 17 +@Net70_18: Runtime = Net70, Affinity = 18 +@Net80_19: Runtime = Net80, Affinity = 19 + +| Method | Job | Average | Spread | +|:-------|:----------------|----------:|--------:| +| Foo | HostProcess_0 | 2.00 ns | 0.81 ns | +| Bar | HostProcess_0 | 7.00 ns | 0.81 ns | +| Foo | NotRecognized_1 | 12.00 ns | 0.81 ns | +| Bar | NotRecognized_1 | 17.00 ns | 0.81 ns | +| Foo | Mono_2 | 22.00 ns | 0.81 ns | +| Bar | Mono_2 | 27.00 ns | 0.81 ns | +| Foo | Net461_3 | 32.00 ns | 0.81 ns | +| Bar | Net461_3 | 37.00 ns | 0.81 ns | +| Foo | Net462_4 | 42.00 ns | 0.81 ns | +| Bar | Net462_4 | 47.00 ns | 0.81 ns | +| Foo | Net47_5 | 52.00 ns | 0.81 ns | +| Bar | Net47_5 | 57.00 ns | 0.81 ns | +| Foo | Net471_6 | 62.00 ns | 0.81 ns | +| Bar | Net471_6 | 67.00 ns | 0.81 ns | +| Foo | Net472_7 | 72.00 ns | 0.81 ns | +| Bar | Net472_7 | 77.00 ns | 0.81 ns | +| Foo | Net48_8 | 82.00 ns | 0.81 ns | +| Bar | Net48_8 | 87.00 ns | 0.81 ns | +| Foo | Net481_9 | 92.00 ns | 0.81 ns | +| Bar | Net481_9 | 97.00 ns | 0.81 ns | +| Foo | NetCoreApp20_10 | 102.00 ns | 0.81 ns | +| Bar | NetCoreApp20_10 | 107.00 ns | 0.81 ns | +| Foo | NetCoreApp21_11 | 112.00 ns | 0.81 ns | +| Bar | NetCoreApp21_11 | 117.00 ns | 0.81 ns | +| Foo | NetCoreApp22_12 | 122.00 ns | 0.81 ns | +| Bar | NetCoreApp22_12 | 127.00 ns | 0.81 ns | +| Foo | NetCoreApp30_13 | 132.00 ns | 0.81 ns | +| Bar | NetCoreApp30_13 | 137.00 ns | 0.81 ns | +| Foo | NetCoreApp31_14 | 142.00 ns | 0.81 ns | +| Bar | NetCoreApp31_14 | 147.00 ns | 0.81 ns | +| Foo | NetCoreApp50_15 | 152.00 ns | 0.81 ns | +| Bar | NetCoreApp50_15 | 157.00 ns | 0.81 ns | +| Foo | Net50_16 | 162.00 ns | 0.81 ns | +| Bar | Net50_16 | 167.00 ns | 0.81 ns | +| Foo | Net60_17 | 172.00 ns | 0.81 ns | +| Bar | Net60_17 | 177.00 ns | 0.81 ns | +| Foo | Net70_18 | 182.00 ns | 0.81 ns | +| Bar | Net70_18 | 187.00 ns | 0.81 ns | +| Foo | Net80_19 | 192.00 ns | 0.81 ns | +| Bar | Net80_19 | 197.00 ns | 0.81 ns | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".engine", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.os", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".host.cpu", + "cloud": "primary", + "isSelfExplanatory": true + }, + { + "selector": ".benchmark", + "cloud": "secondary" + }, + { + "selector": ".job", + "cloud": "secondary", + "compressed": true + }, + { + "selector": "=average" + }, + { + "selector": "=spread" + } + ] + } + }, + "engine": { + "name": "BenchmarkDotNet", + "version": "0.1729.0-mock", + "display": "BenchmarkDotNet v0.1729.0-mock" + }, + "host": { + "runtimeVersion": "Clr 4.0.x.mock", + "hasAttachedDebugger": false, + "hasRyuJit": true, + "configuration": "CONFIGURATION", + "dotNetSdkVersion": "1.0.x.mock", + "chronometerFrequency": 2531248, + "hardwareTimerKind": "Tsc", + "os": { + "display": "Microsoft Windows NT 10.0.x.mock" + }, + "cpu": { + "processorName": "MockIntel(R) Core(TM) i7-6700HQ CPU 2.60GHz", + "physicalProcessorCount": 1, + "physicalCoreCount": 4, + "logicalCoreCount": 8, + "nominalFrequencyHz": 3100000000, + "minFrequencyHz": 3100000000, + "maxFrequencyHz": 3100000000 + } + } + }, + "children": [ + { + "attributes": { + "job": { + "environment": { + "runtime": "hostProcess", + "jit": "ryuJit", + "affinity": 0 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 1, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 2, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 3, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 6, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 7, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 8, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "notRecognized", + "jit": "ryuJit", + "affinity": 1 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 11, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 12, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 13, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 16, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 17, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 18, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "mono", + "jit": "ryuJit", + "affinity": 2 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 21, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 22, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 23, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 26, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 27, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 28, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net461", + "jit": "ryuJit", + "affinity": 3 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 31, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 32, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 33, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 36, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 37, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 38, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net462", + "jit": "ryuJit", + "affinity": 4 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 41, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 42, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 43, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 46, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 47, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 48, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net47", + "jit": "ryuJit", + "affinity": 5 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 51, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 52, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 53, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 56, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 57, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 58, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net471", + "jit": "ryuJit", + "affinity": 6 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 61, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 62, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 63, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 66, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 67, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 68, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net472", + "jit": "ryuJit", + "affinity": 7 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 71, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 72, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 73, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 76, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 77, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 78, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net48", + "jit": "ryuJit", + "affinity": 8 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 81, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 82, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 83, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 86, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 87, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 88, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net481", + "jit": "ryuJit", + "affinity": 9 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 91, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 92, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 93, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 96, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 97, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 98, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp20", + "jit": "ryuJit", + "affinity": 10 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 101, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 102, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 103, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 106, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 107, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 108, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp21", + "jit": "ryuJit", + "affinity": 11 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 111, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 112, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 113, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 116, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 117, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 118, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp22", + "jit": "ryuJit", + "affinity": 12 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 121, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 122, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 123, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 126, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 127, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 128, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp30", + "jit": "ryuJit", + "affinity": 13 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 131, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 132, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 133, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 136, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 137, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 138, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp31", + "jit": "ryuJit", + "affinity": 14 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 141, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 142, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 143, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 146, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 147, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 148, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "netCoreApp50", + "jit": "ryuJit", + "affinity": 15 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 151, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 152, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 153, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 156, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 157, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 158, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net50", + "jit": "ryuJit", + "affinity": 16 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 161, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 162, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 163, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 166, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 167, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 168, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net60", + "jit": "ryuJit", + "affinity": 17 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 171, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 172, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 173, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 176, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 177, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 178, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net70", + "jit": "ryuJit", + "affinity": 18 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 181, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 182, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 183, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 186, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 187, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 188, + "unit": "ns" + } + ] + } + ] + }, + { + "attributes": { + "job": { + "environment": { + "runtime": "net80", + "jit": "ryuJit", + "affinity": 19 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 191, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 192, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 193, + "unit": "ns" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 196, + "unit": "ns" + }, + { + "iterationIndex": 1, + "value": 197, + "unit": "ns" + }, + { + "iterationIndex": 2, + "value": 198, + "unit": "ns" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=params01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=params01.verified.txt new file mode 100644 index 0000000000..76b90f84c6 --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=params01.verified.txt @@ -0,0 +1,80 @@ +| Method | A | B | Average | +|:-------|---:|---:|--------:| +| Foo | 1 | 2 | 10.0 ms | +| Bar | 10 | 20 | 20.0 ms | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".benchmark.method" + }, + { + "selector": ".parameters.values" + }, + { + "selector": "=average" + } + ] + } + } + }, + "children": [ + { + "attributes": { + "parameters": { + "values": { + "a": 1, + "b": 2 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 10, + "unit": "ms" + } + ] + } + ] + }, + { + "attributes": { + "parameters": { + "values": { + "a": 10, + "b": 20 + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 20, + "unit": "ms" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=sort01.verified.txt b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=sort01.verified.txt new file mode 100644 index 0000000000..1c2332642f --- /dev/null +++ b/tests/BenchmarkDotNet.Tests/Phd/VerifiedFiles/Phd.PhdTableTest_key=sort01.verified.txt @@ -0,0 +1,59 @@ +| Method | Average | +|:-------|--------:| +| Bar | 20.0 ms | +| Foo | 10.0 ms | + +{ + "attributes": { + "meta": { + "table": { + "columnDefinitions": [ + { + "selector": ".benchmark.method" + }, + { + "selector": "=average" + } + ], + "sortPolicies": [ + { + "selector": "=average", + "direction": "descending" + } + ] + } + } + }, + "children": [ + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Foo" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 10, + "unit": "ms" + } + ] + }, + { + "attributes": { + "benchmark": { + "type": "Bench", + "method": "Bar" + } + }, + "metrics": [ + { + "iterationIndex": 0, + "value": 20, + "unit": "ms" + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Portability/Cpu/CpuInfoFormatterTests.cs b/tests/BenchmarkDotNet.Tests/Portability/Cpu/CpuInfoFormatterTests.cs deleted file mode 100644 index 1fd7b14545..0000000000 --- a/tests/BenchmarkDotNet.Tests/Portability/Cpu/CpuInfoFormatterTests.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Text; -using System.Threading.Tasks; -using BenchmarkDotNet.Portability.Cpu; -using BenchmarkDotNet.Tests.Builders; -using VerifyXunit; -using Xunit; - -namespace BenchmarkDotNet.Tests.Portability.Cpu; - -[Collection("VerifyTests")] -[UsesVerify] -public class CpuInfoFormatterTests -{ - [Fact] - public Task FormatTest() - { - var captions = new StringBuilder(); - foreach (string? processorName in new[] { null, "", "Intel" }) - foreach (int? physicalProcessorCount in new int?[] { null, 0, 1, 2 }) - foreach (int? physicalCoreCount in new int?[] { null, 0, 1, 2 }) - foreach (int? logicalCoreCount in new int?[] { null, 0, 1, 2 }) - { - var mockCpuInfo = new CpuInfo(processorName, physicalProcessorCount, physicalCoreCount, logicalCoreCount, null, null); - captions.AppendLine(CpuInfoFormatter.Format(mockCpuInfo)); - } - - var settings = VerifySettingsFactory.Create(); - return Verifier.Verify(captions.ToString(), settings); - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/RuntimeVersionDetectionTests.cs b/tests/BenchmarkDotNet.Tests/RuntimeVersionDetectionTests.cs index 29f8a65798..5fa5f47051 100644 --- a/tests/BenchmarkDotNet.Tests/RuntimeVersionDetectionTests.cs +++ b/tests/BenchmarkDotNet.Tests/RuntimeVersionDetectionTests.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.IO; +using BenchmarkDotNet.Detectors; using Xunit; namespace BenchmarkDotNet.Tests @@ -110,7 +111,7 @@ public void CurrentRuntimeIsProperlyRecognized() var runtime = RuntimeInformation.GetCurrentRuntime(); #if NETFRAMEWORK - if (RuntimeInformation.IsWindows()) + if (OsDetector.IsWindows()) Assert.True(runtime is ClrRuntime); else Assert.True(runtime is MonoRuntime); diff --git a/tests/BenchmarkDotNet.Tests/SimpleJsonTests.cs b/tests/BenchmarkDotNet.Tests/SimpleJsonTests.cs index 2bb57fe436..fd599aea5b 100644 --- a/tests/BenchmarkDotNet.Tests/SimpleJsonTests.cs +++ b/tests/BenchmarkDotNet.Tests/SimpleJsonTests.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; using Xunit; -using JsonSerializer = SimpleJson.SimpleJson; +using JsonSerializer = SimpleJson.SimpleJsonSerializer; namespace BenchmarkDotNet.Tests { diff --git a/tests/BenchmarkDotNet.Tests/Validators/ConfigCompatibilityValidatorTests.cs b/tests/BenchmarkDotNet.Tests/Validators/ConfigCompatibilityValidatorTests.cs index fc73793980..ab09ac2d1c 100644 --- a/tests/BenchmarkDotNet.Tests/Validators/ConfigCompatibilityValidatorTests.cs +++ b/tests/BenchmarkDotNet.Tests/Validators/ConfigCompatibilityValidatorTests.cs @@ -7,6 +7,7 @@ using BenchmarkDotNet.Tests.Loggers; using BenchmarkDotNet.Validators; using System.Linq; +using BenchmarkDotNet.Detectors; using BenchmarkDotNet.Portability; using Xunit; using Xunit.Abstractions; @@ -22,7 +23,7 @@ public class ConfigCompatibilityValidatorTests [Fact] public void RunningBenchmarksWithIncompatibleConfigsMustFailWithCriticalError() { - if (!KnownIssue.Issue2299.IsFixed && RuntimeInformation.IsMono && RuntimeInformation.IsLinux()) + if (!KnownIssue.Issue2299.IsFixed && RuntimeInformation.IsMono && OsDetector.IsLinux()) { Output.WriteLine(KnownIssue.Issue2299.IgnoreMessage); return;