Skip to content

ci/performance testing to v1 #2310

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 26 commits into from
Apr 9, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
475bfeb
ci: performance project scaffolding
baywet Mar 28, 2025
a7416ab
chore: moves benchmark to dedicated directory
baywet Mar 28, 2025
e3f2c65
chore: commits initial benchmark results
baywet Mar 28, 2025
e87e2e6
ci: adds a comparison project for benchmark results
baywet Mar 28, 2025
914ecbf
ci: adds benchmark runs and comparison
baywet Mar 31, 2025
56adf5b
ci: renames empty models tests
baywet Mar 31, 2025
aa0e588
chore: refactors to a command structure
baywet Apr 4, 2025
2a3b34d
chore: moves models to a dedicated source file
baywet Apr 4, 2025
ec9ae69
ci: fixes missing project argument
baywet Apr 4, 2025
850db82
ci: fixes reports path
baywet Apr 4, 2025
ef34542
chore: moves policies to own directory
baywet Apr 4, 2025
f8f89b0
chore: no warn on static method for perf test project
baywet Apr 7, 2025
53ccd26
chore: linting
baywet Apr 7, 2025
2db17ed
chore: reduces run time for empty performance tests
baywet Apr 7, 2025
0ea217b
chore: linting
baywet Apr 7, 2025
4b7d820
ci: fixes working directory for benchmark run
baywet Apr 7, 2025
8c55f17
ci: adds basic infrastructure for descriptions based performance tests
baywet Apr 7, 2025
64547fe
chore: refresh empty object tests
baywet Apr 7, 2025
0106ad7
ci: adds comparison run for descriptions comparisons
baywet Apr 7, 2025
d1efe85
ci: adds percentage based comparisons
baywet Apr 7, 2025
29dd7d8
ci: adds large description to performance tests
baywet Apr 8, 2025
2db224e
ci: adds yaml descriptions perf tests to compare
baywet Apr 8, 2025
7bd9c5e
chore: updates performance tests to work with v1
baywet Apr 8, 2025
39486e2
chore: updates performance tests results
baywet Apr 8, 2025
d5b794c
ci: adds truncation in percentage difference to reduce noise
baywet Apr 8, 2025
62714c2
chore: fixes sln references
baywet Apr 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 53 additions & 1 deletion .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x
dotnet-version: 8.x

- name: Checkout repository
id: checkout_repo
Expand All @@ -36,3 +36,55 @@ jobs:
shell: pwsh
run: |
dotnet test Microsoft.OpenApi.sln -c Release -v n

validate-trimming:
name: Validate Project for Trimming
runs-on: windows-latest
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x

- name: Validate Trimming warnings
run: dotnet publish -c Release -r win-x64 /p:TreatWarningsAsErrors=true /warnaserror -f net8.0
working-directory: ./test/Microsoft.OpenApi.Trimming.Tests

validate-performance:
name: Validate performance of the library
runs-on: ubuntu-latest
needs: [ci]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.x

- name: Copy committed results
run: |
mkdir -p ./performanceResults
cp -r ./performance/benchmark/BenchmarkDotNet.Artifacts/results/* ./performanceResults

- name: Run performance tests
run: |
dotnet run -c Release
working-directory: ./performance/benchmark

- name: Run comparison tool for empty models
run: dotnet run -c Release --project ./performance/resultsComparer/resultsComparer.csproj -- compare $OLD_REPORT $NEW_REPORT -p IdenticalMemoryUsage
shell: bash
env:
NEW_REPORT: "${{ github.workspace }}/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json"
OLD_REPORT: "${{ github.workspace }}/performanceResults/performance.EmptyModels-report.json"

- name: Run comparison tool for descriptions
run: dotnet run -c Release --project ./performance/resultsComparer/resultsComparer.csproj -- compare $OLD_REPORT $NEW_REPORT -p ZeroPointOnePercentDifferenceMemoryUsage
shell: bash
env:
NEW_REPORT: "${{ github.workspace }}/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json"
OLD_REPORT: "${{ github.workspace }}/performanceResults/performance.Descriptions-report.json"
33 changes: 32 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,38 @@
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/main/debugger-launchjson.md
"name": "Launch Benchmark",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/performance/benchmark/bin/Release/net8.0/PerformanceTests.dll",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
"stopAtEntry": false,
},
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/main/debugger-launchjson.md
"name": "Launch Results comparer",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/performance/resultsComparer/bin/Debug/net8.0/resultsComparer.dll",
"cwd": "${workspaceFolder}/performance/resultsComparer",
"args": ["compare"],
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "internalConsole",
"stopAtEntry": false,
"requireExactSource": false,
},
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/main/debugger-launchjson.md
"name": "Launch Workbench",
"type": "coreclr",
"request": "launch",
Expand Down
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"group": "build",
"args": [
"build",
"${workspaceFolder}/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj",
"${workspaceFolder}/Microsoft.OpenApi.sln",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
Expand Down
103 changes: 103 additions & 0 deletions Microsoft.OpenApi.sln
Original file line number Diff line number Diff line change
Expand Up @@ -30,44 +30,144 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.OpenApi.Hidi.Test
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.OpenApi.Trimming.Tests", "test\Microsoft.OpenApi.Trimming.Tests\Microsoft.OpenApi.Trimming.Tests.csproj", "{1D2E0C6E-B103-4CB6-912E-D56FA1501296}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "performance", "performance", "{D4B74A0E-1C52-E2FD-154E-FB64CAA65177}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmark", "benchmark", "{0CDFEE42-0230-388B-0CCE-7A719036F8EF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PerformanceTests", "performance\benchmark\PerformanceTests.csproj", "{EB81FCF5-7ED7-4480-8267-3613202347E3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "resultsComparer", "performance\resultsComparer\resultsComparer.csproj", "{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|x64.ActiveCfg = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|x64.Build.0 = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|x86.ActiveCfg = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Debug|x86.Build.0 = Debug|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|Any CPU.Build.0 = Release|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|x64.ActiveCfg = Release|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|x64.Build.0 = Release|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|x86.ActiveCfg = Release|Any CPU
{A8E50143-69B2-472A-9D45-3F9A05D13202}.Release|x86.Build.0 = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|x64.ActiveCfg = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|x64.Build.0 = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|x86.ActiveCfg = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Debug|x86.Build.0 = Debug|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|Any CPU.Build.0 = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|x64.ActiveCfg = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|x64.Build.0 = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|x86.ActiveCfg = Release|Any CPU
{6A5E91E5-0441-46EE-AEB9-8334981B7F08}.Release|x86.Build.0 = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|x64.ActiveCfg = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|x64.Build.0 = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|x86.ActiveCfg = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Debug|x86.Build.0 = Debug|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|Any CPU.ActiveCfg = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|Any CPU.Build.0 = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|x64.ActiveCfg = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|x64.Build.0 = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|x86.ActiveCfg = Release|Any CPU
{79933258-0126-4382-8755-D50820ECC483}.Release|x86.Build.0 = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|x64.ActiveCfg = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|x64.Build.0 = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|x86.ActiveCfg = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Debug|x86.Build.0 = Debug|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|Any CPU.Build.0 = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|x64.ActiveCfg = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|x64.Build.0 = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|x86.ActiveCfg = Release|Any CPU
{AD83F991-DBF3-4251-8613-9CC54C826964}.Release|x86.Build.0 = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|x64.ActiveCfg = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|x64.Build.0 = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|x86.ActiveCfg = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Debug|x86.Build.0 = Debug|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|Any CPU.Build.0 = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|x64.ActiveCfg = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|x64.Build.0 = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|x86.ActiveCfg = Release|Any CPU
{1ED3C2C1-E1E7-4925-B4E6-2D969C3F5237}.Release|x86.Build.0 = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|x64.ActiveCfg = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|x64.Build.0 = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|x86.ActiveCfg = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Debug|x86.Build.0 = Debug|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|Any CPU.Build.0 = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|x64.ActiveCfg = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|x64.Build.0 = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|x86.ActiveCfg = Release|Any CPU
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE}.Release|x86.Build.0 = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|x64.ActiveCfg = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|x64.Build.0 = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|x86.ActiveCfg = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Debug|x86.Build.0 = Debug|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|Any CPU.Build.0 = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|x64.ActiveCfg = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|x64.Build.0 = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|x86.ActiveCfg = Release|Any CPU
{D8F799DD-04AC-4A13-B344-45A5B944450A}.Release|x86.Build.0 = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|x64.ActiveCfg = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|x64.Build.0 = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|x86.ActiveCfg = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Debug|x86.Build.0 = Debug|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|Any CPU.Build.0 = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|x64.ActiveCfg = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|x64.Build.0 = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|x86.ActiveCfg = Release|Any CPU
{1D2E0C6E-B103-4CB6-912E-D56FA1501296}.Release|x86.Build.0 = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|x64.ActiveCfg = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|x64.Build.0 = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|x86.ActiveCfg = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Debug|x86.Build.0 = Debug|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|Any CPU.Build.0 = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|x64.ActiveCfg = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|x64.Build.0 = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|x86.ActiveCfg = Release|Any CPU
{EB81FCF5-7ED7-4480-8267-3613202347E3}.Release|x86.Build.0 = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|x64.ActiveCfg = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|x64.Build.0 = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|x86.ActiveCfg = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Debug|x86.Build.0 = Debug|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|Any CPU.Build.0 = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|x64.ActiveCfg = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|x64.Build.0 = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|x86.ActiveCfg = Release|Any CPU
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand All @@ -81,6 +181,9 @@ Global
{254841B5-7DAC-4D1D-A9C5-44FE5CE467BE} = {E546B92F-20A8-49C3-8323-4B25BB78F3E1}
{D8F799DD-04AC-4A13-B344-45A5B944450A} = {6357D7FD-2DE4-4900-ADB9-ABC37052040A}
{1D2E0C6E-B103-4CB6-912E-D56FA1501296} = {6357D7FD-2DE4-4900-ADB9-ABC37052040A}
{0CDFEE42-0230-388B-0CCE-7A719036F8EF} = {D4B74A0E-1C52-E2FD-154E-FB64CAA65177}
{EB81FCF5-7ED7-4480-8267-3613202347E3} = {0CDFEE42-0230-388B-0CCE-7A719036F8EF}
{72459CA5-C3AF-462E-98BC-81BC0E0F6B2A} = {D4B74A0E-1C52-E2FD-154E-FB64CAA65177}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9F171EFC-0DB5-4B10-ABFA-AF48D52CC565}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
```

BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3476)
11th Gen Intel Core i7-1185G7 3.00GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK 9.0.202
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
ShortRun : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI

Job=ShortRun IterationCount=3 LaunchCount=1
WarmupCount=3

```
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
|------------- |---------------:|-------------:|-------------:|-----------:|-----------:|----------:|-------------:|
| PetStoreYaml | 448.7 μs | 326.6 μs | 17.90 μs | 58.5938 | 11.7188 | - | 381.79 KB |
| PetStoreJson | 484.8 μs | 156.9 μs | 8.60 μs | 62.5000 | 15.6250 | - | 389.28 KB |
| GHESYaml | 1,008,349.6 μs | 565,392.0 μs | 30,991.04 μs | 66000.0000 | 23000.0000 | 4000.0000 | 382785 KB |
| GHESJson | 1,039,447.0 μs | 267,501.0 μs | 14,662.63 μs | 67000.0000 | 23000.0000 | 4000.0000 | 389970.77 KB |
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Gen2,Allocated
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,448.7 μs,326.6 μs,17.90 μs,58.5938,11.7188,0.0000,381.79 KB
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,484.8 μs,156.9 μs,8.60 μs,62.5000,15.6250,0.0000,389.28 KB
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"1,008,349.6 μs","565,392.0 μs","30,991.04 μs",66000.0000,23000.0000,4000.0000,382785 KB
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111,Empty,RyuJit,Default,X64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 8.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,3,Default,1,Default,Default,Default,Default,Default,Default,16,3,"1,039,447.0 μs","267,501.0 μs","14,662.63 μs",67000.0000,23000.0000,4000.0000,389970.77 KB
Loading
Loading