From 5b2b95181651938e452bcfc785f6833d7ef7bbea Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 10:04:36 -0500 Subject: [PATCH 01/52] ci: updates pipelines with latest definitions Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 48 ++++++++++++++++----------- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/docker.yml | 16 ++++----- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index f381a4303..e9aa773a3 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -5,13 +5,15 @@ name: $(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r) trigger: branches: include: - - master - - vnext + - main + - dev + - support/v1 pr: branches: include: - - master - - vnext + - main + - dev + - support/v1 variables: buildPlatform: 'Any CPU' buildConfiguration: 'Release' @@ -206,10 +208,17 @@ extends: content: '*.nupkg' - stage: deploy - condition: and(contains(variables['build.sourceBranch'], 'refs/heads/master'), succeeded()) + condition: and(or(contains(variables['build.sourceBranch'], 'refs/heads/main'),contains(variables['build.sourceBranch'], 'refs/heads/support/v1')), succeeded()) dependsOn: build jobs: - deployment: deploy_hidi + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: Nugets + targetPath: '$(Pipeline.Workspace)' dependsOn: [] environment: nuget-org strategy: @@ -218,11 +227,6 @@ extends: pool: vmImage: ubuntu-latest steps: - - task: DownloadPipelineArtifact@2 - displayName: Download nupkg from artifacts - inputs: - artifact: Nugets - source: current - task: DownloadPipelineArtifact@2 displayName: Download hidi executable from artifacts inputs: @@ -264,6 +268,13 @@ extends: ]' - deployment: deploy_lib + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: Nugets + targetPath: '$(Pipeline.Workspace)' dependsOn: [] environment: nuget-org strategy: @@ -272,11 +283,6 @@ extends: pool: vmImage: ubuntu-latest steps: - - task: DownloadPipelineArtifact@2 - displayName: Download nupkg from artifacts - inputs: - artifact: Nugets - source: current - powershell: | $fileNames = "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Hidi.*.nupkg", "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Readers.*.nupkg", "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Workbench.*.nupkg" foreach($fileName in $fileNames) { @@ -294,6 +300,13 @@ extends: publishFeedCredentials: 'OpenAPI Nuget Connection' - deployment: deploy_readers + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: Nugets + targetPath: '$(Pipeline.Workspace)' dependsOn: deploy_lib environment: nuget-org strategy: @@ -302,11 +315,6 @@ extends: pool: vmImage: ubuntu-latest steps: - - task: DownloadPipelineArtifact@2 - displayName: Download nupkg from artifacts - inputs: - artifact: Nugets - source: current - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 22eb5f8fa..4224ace24 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -2,7 +2,7 @@ name: CodeQL Analysis on: push: - branches: [ vnext ] + branches: [ main, dev ] pull_request: schedule: - cron: '0 8 * * *' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index ee951983c..7e81a456d 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -2,7 +2,7 @@ name: Publish Docker image on: workflow_dispatch: push: - branches: [master, vnext] + branches: [main, dev, support/v1] paths: ['src/Microsoft.OpenApi.Hidi/**', '.github/workflows/**'] env: REGISTRY: msgraphprod.azurecr.io @@ -16,7 +16,7 @@ jobs: steps: - name: Check out the repo uses: actions/checkout@v4 - - name: Login to GitHub package feed + - name: Login to registry uses: docker/login-action@v3.3.0 with: username: ${{ secrets.ACR_USERNAME }} @@ -28,15 +28,15 @@ jobs: echo "::set-output name=version::${version}" shell: pwsh id: getversion - - name: Push to GitHub Packages - Nightly - if: ${{ github.ref == 'refs/heads/vnext' }} - uses: docker/build-push-action@v6.7.0 + - name: Push to registry - Nightly + if: ${{ github.ref == 'refs/heads/dev' }} + uses: docker/build-push-action@v6.10.0 with: push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly - - name: Push to GitHub Packages - Release - if: ${{ github.ref == 'refs/heads/master' }} - uses: docker/build-push-action@v6.7.0 + - name: Push to registry - Release + if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/support/v1' }} + uses: docker/build-push-action@v6.10.0 with: push: true tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }} From 486a175829b9411e5354cf47835d2a47ccea5558 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 10:28:57 -0500 Subject: [PATCH 02/52] security: bumps STJ version to fix security vulnerabilities Signed-off-by: Vincent Biret --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 377f67995..2b4ea5d33 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -45,7 +45,7 @@ - + From 96659854a790973bfb62fac44d0e60a0f835f295 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 10:30:56 -0500 Subject: [PATCH 03/52] fix: missing stj reference Signed-off-by: Vincent Biret --- .../Microsoft.OpenApi.Readers.Tests.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj index d0740f052..bf6933648 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj +++ b/test/Microsoft.OpenApi.Readers.Tests/Microsoft.OpenApi.Readers.Tests.csproj @@ -1,4 +1,4 @@ - + net8.0 false @@ -24,7 +24,7 @@ - + From 2635818c411457e11ad5d2d48e02ffb706a362aa Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 10:33:18 -0500 Subject: [PATCH 04/52] chore: fixes outdated test Signed-off-by: Vincent Biret --- .../OpenApiReaderTests/OpenApiStreamReaderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs index 1b2faa137..daab425f5 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs @@ -55,7 +55,7 @@ public async Task StreamShouldReadWhenInitializedAsync() BaseAddress = new Uri("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/") }; - var stream = await httpClient.GetStreamAsync("master/examples/v3.0/petstore.yaml"); + var stream = await httpClient.GetStreamAsync("main/examples/v3.0/petstore.yaml"); // Read V3 as YAML var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic); From c8fe723c634f867ce79f889e276c52637d96826d Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 11:58:09 -0500 Subject: [PATCH 05/52] fix: another attempt at fixing integration test Signed-off-by: Vincent Biret --- .../OpenApiReaderTests/OpenApiStreamReaderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs index daab425f5..5bca978b2 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs @@ -55,7 +55,7 @@ public async Task StreamShouldReadWhenInitializedAsync() BaseAddress = new Uri("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/") }; - var stream = await httpClient.GetStreamAsync("main/examples/v3.0/petstore.yaml"); + var stream = await httpClient.GetStreamAsync("main/tests/v3.0/pass/petstore.yaml"); // Read V3 as YAML var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic); From 8380f666ed2b496be666ae280ba77f8d2c2cc5f5 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 13:04:35 -0500 Subject: [PATCH 06/52] ci: fixes hidi gh release --- .azure-pipelines/ci-build.yml | 25 +++++++------------------ 1 file changed, 7 insertions(+), 18 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index e9aa773a3..922fde421 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -45,8 +45,8 @@ extends: targetPath: '$(Build.ArtifactStagingDirectory)/Nugets' - output: pipelineArtifact displayName: 'Publish Artifact: Hidi' - artifactName: Microsoft.OpenApi.Hidi-v$(hidiversion) - targetPath: '$(Build.ArtifactStagingDirectory)/Microsoft.OpenApi.Hidi-v$(hidiversion)' + artifactName: Hidi + targetPath: '$(Build.ArtifactStagingDirectory)/Microsoft.OpenApi.Hidi' steps: - task: UseDotNet@2 displayName: 'Use .NET 6' @@ -179,23 +179,13 @@ extends: MaxConcurrency: '50' MaxRetryAttempts: '5' PendingAnalysisWaitTimeoutMinutes: '5' - - - task: PowerShell@2 - displayName: "Get Hidi's version-number from .csproj" - inputs: - targetType: 'inline' - script: | - $xml = [Xml] (Get-Content .\src\Microsoft.OpenApi.Hidi\Microsoft.OpenApi.Hidi.csproj) - $version = $xml.Project.PropertyGroup.Version - echo $version - echo "##vso[task.setvariable variable=hidiversion]$version" - + # publish hidi as an .exe - task: DotNetCoreCLI@2 displayName: publish Hidi as executable inputs: command: 'publish' - arguments: -c Release --runtime win-x64 /p:PublishSingleFile=true /p:PackAsTool=false --self-contained --output $(Build.ArtifactStagingDirectory)/Microsoft.OpenApi.Hidi-v$(hidiversion) + arguments: -c Release --runtime win-x64 /p:PublishSingleFile=true /p:PackAsTool=false --self-contained --output $(Build.ArtifactStagingDirectory)/Microsoft.OpenApi.Hidi projects: 'src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj' publishWebProjects: False zipAfterPublish: false @@ -219,6 +209,9 @@ extends: - input: pipelineArtifact artifactName: Nugets targetPath: '$(Pipeline.Workspace)' + - input: pipelineArtifact + artifactName: Hidi + targetPath: '$(Pipeline.Workspace)' dependsOn: [] environment: nuget-org strategy: @@ -227,10 +220,6 @@ extends: pool: vmImage: ubuntu-latest steps: - - task: DownloadPipelineArtifact@2 - displayName: Download hidi executable from artifacts - inputs: - source: current - pwsh: | $artifactName = Get-ChildItem -Path $(Pipeline.Workspace)\Nugets -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" From b5b1a839b7fccaa9fe8841cc8185bbfdaba842bb Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 19 Dec 2024 13:39:59 -0500 Subject: [PATCH 07/52] fix: redundant artifact upload Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index 922fde421..449142a91 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -43,10 +43,6 @@ extends: displayName: 'Publish Artifact: Nugets' artifactName: Nugets targetPath: '$(Build.ArtifactStagingDirectory)/Nugets' - - output: pipelineArtifact - displayName: 'Publish Artifact: Hidi' - artifactName: Hidi - targetPath: '$(Build.ArtifactStagingDirectory)/Microsoft.OpenApi.Hidi' steps: - task: UseDotNet@2 displayName: 'Use .NET 6' @@ -209,9 +205,6 @@ extends: - input: pipelineArtifact artifactName: Nugets targetPath: '$(Pipeline.Workspace)' - - input: pipelineArtifact - artifactName: Hidi - targetPath: '$(Pipeline.Workspace)' dependsOn: [] environment: nuget-org strategy: From c5bf568711d9a96788935ab312c74519164e3f46 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 5 Sep 2024 13:06:05 -0400 Subject: [PATCH 08/52] feat: bumps v3 patch version to 3.0.4 Signed-off-by: Vincent Biret --- src/Microsoft.OpenApi.Workbench/MainWindow.xaml | 2 +- src/Microsoft.OpenApi/Models/OpenApiDocument.cs | 2 +- .../UtilityFiles/docWithReusableHeadersAndExamples.yaml | 2 +- .../Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml | 2 +- .../Samples/OpenApiDiagnosticReportMerged/TodoReference.yaml | 2 +- .../Samples/OpenApiDocument/documentWithExternalRefs.yaml | 2 +- .../V3Tests/Samples/OpenApiExample/explicitString.yaml | 2 +- ...ntAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt | 2 +- ...entAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt | 2 +- ...ceAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt | 2 +- ...nceAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt | 2 +- ...nsAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt | 2 +- ...onsAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt | 2 +- test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs | 2 +- .../Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs | 4 ++-- 15 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/Microsoft.OpenApi.Workbench/MainWindow.xaml b/src/Microsoft.OpenApi.Workbench/MainWindow.xaml index 41a4f2543..e31025f42 100644 --- a/src/Microsoft.OpenApi.Workbench/MainWindow.xaml +++ b/src/Microsoft.OpenApi.Workbench/MainWindow.xaml @@ -40,7 +40,7 @@ - + diff --git a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs index 1a7035793..a5f796241 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiDocument.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiDocument.cs @@ -105,7 +105,7 @@ public void SerializeAsV3(IOpenApiWriter writer) writer.WriteStartObject(); // openapi - writer.WriteProperty(OpenApiConstants.OpenApi, "3.0.1"); + writer.WriteProperty(OpenApiConstants.OpenApi, "3.0.4"); // info writer.WriteRequiredObject(OpenApiConstants.Info, Info, (w, i) => i.SerializeAsV3(w)); diff --git a/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/docWithReusableHeadersAndExamples.yaml b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/docWithReusableHeadersAndExamples.yaml index 3260ea430..60ee7e5c8 100644 --- a/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/docWithReusableHeadersAndExamples.yaml +++ b/test/Microsoft.OpenApi.Hidi.Tests/UtilityFiles/docWithReusableHeadersAndExamples.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.1 +openapi: 3.0.4 info: title: Example with Multiple Operations and Local $refs version: 1.0.0 diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml index beaa7995c..e71623802 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoMain.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.1 +openapi: 3.0.4 info: title: Example using a remote reference version: 1.0.0 diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoReference.yaml b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoReference.yaml index db3958149..a6e10b894 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoReference.yaml +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/Samples/OpenApiDiagnosticReportMerged/TodoReference.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.1 +openapi: 3.0.4 info: title: Components for the todo app version: 1.0.0 diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/documentWithExternalRefs.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/documentWithExternalRefs.yaml index c0b7b3a25..2d9018b2a 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/documentWithExternalRefs.yaml +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/documentWithExternalRefs.yaml @@ -1,4 +1,4 @@ - openapi: 3.0.1 + openapi: 3.0.4 info: title: anyOf-oneOf license: diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiExample/explicitString.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiExample/explicitString.yaml index c3103a810..b3d542315 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiExample/explicitString.yaml +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiExample/explicitString.yaml @@ -1,4 +1,4 @@ -openapi: 3.0.1 +openapi: 3.0.4 info: version: 1.0.0 title: Test API diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt index a94db37b7..5d9d7f3da 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt @@ -1,5 +1,5 @@ { - "openapi": "3.0.1", + "openapi": "3.0.4", "info": { "title": "Swagger Petstore (Simple)", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt index 72106e400..5fd0d1e26 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt @@ -1 +1 @@ -{"openapi":"3.0.1","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","termsOfService":"http://helloreverb.com/terms/","contact":{"name":"Swagger API team","url":"http://swagger.io/","email":"foo@example.com"},"license":{"name":"MIT","url":"http://opensource.org/licenses/MIT"},"version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/pets":{"get":{"description":"Returns all pets from the system that the user has access to","operationId":"findPets","parameters":[{"name":"tags","in":"query","description":"tags to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"limit","in":"query","description":"maximum number of results to return","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}},"application/xml":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}},"post":{"description":"Creates a new pet in the store. Duplicates are allowed","operationId":"addPet","requestBody":{"description":"Pet to add to the store","content":{"application/json":{"schema":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}},"required":true},"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}}},"/pets/{id}":{"get":{"description":"Returns a user based on a single ID, if the user does not have access to the pet","operationId":"findPetById","parameters":[{"name":"id","in":"path","description":"ID of pet to fetch","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}},"application/xml":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}},"delete":{"description":"deletes a single pet based on the ID supplied","operationId":"deletePet","parameters":[{"name":"id","in":"path","description":"ID of pet to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"pet deleted"},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}}}},"components":{"schemas":{"pet":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"newPet":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"errorModel":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}} \ No newline at end of file +{"openapi":"3.0.4","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","termsOfService":"http://helloreverb.com/terms/","contact":{"name":"Swagger API team","url":"http://swagger.io/","email":"foo@example.com"},"license":{"name":"MIT","url":"http://opensource.org/licenses/MIT"},"version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/pets":{"get":{"description":"Returns all pets from the system that the user has access to","operationId":"findPets","parameters":[{"name":"tags","in":"query","description":"tags to filter by","schema":{"type":"array","items":{"type":"string"}}},{"name":"limit","in":"query","description":"maximum number of results to return","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}},"application/xml":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}},"post":{"description":"Creates a new pet in the store. Duplicates are allowed","operationId":"addPet","requestBody":{"description":"Pet to add to the store","content":{"application/json":{"schema":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}},"required":true},"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}}},"/pets/{id}":{"get":{"description":"Returns a user based on a single ID, if the user does not have access to the pet","operationId":"findPetById","parameters":[{"name":"id","in":"path","description":"ID of pet to fetch","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}},"application/xml":{"schema":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}},"delete":{"description":"deletes a single pet based on the ID supplied","operationId":"deletePet","parameters":[{"name":"id","in":"path","description":"ID of pet to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"pet deleted"},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}}}}}},"components":{"schemas":{"pet":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"newPet":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"errorModel":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}} \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt index eb23d0c24..48be167db 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt @@ -1,5 +1,5 @@ { - "openapi": "3.0.1", + "openapi": "3.0.4", "info": { "title": "Swagger Petstore (Simple)", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt index 01840772e..8b00f4ced 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeAdvancedDocumentWithReferenceAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt @@ -1 +1 @@ -{"openapi":"3.0.1","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","termsOfService":"http://helloreverb.com/terms/","contact":{"name":"Swagger API team","url":"http://swagger.io/","email":"foo@example.com"},"license":{"name":"MIT","url":"http://opensource.org/licenses/MIT"},"version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/pets":{"get":{"description":"Returns all pets from the system that the user has access to","operationId":"findPets","parameters":[{"name":"tags","in":"query","description":"tags to filter by","style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"limit","in":"query","description":"maximum number of results to return","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/pet"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/pet"}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}},"post":{"description":"Creates a new pet in the store. Duplicates are allowed","operationId":"addPet","requestBody":{"description":"Pet to add to the store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newPet"}}},"required":true},"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pet"}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}}},"/pets/{id}":{"get":{"description":"Returns a user based on a single ID, if the user does not have access to the pet","operationId":"findPetById","parameters":[{"name":"id","in":"path","description":"ID of pet to fetch","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pet"}},"application/xml":{"schema":{"$ref":"#/components/schemas/pet"}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}},"delete":{"description":"deletes a single pet based on the ID supplied","operationId":"deletePet","parameters":[{"name":"id","in":"path","description":"ID of pet to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"pet deleted"},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}}}},"components":{"schemas":{"pet":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"newPet":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"errorModel":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}} \ No newline at end of file +{"openapi":"3.0.4","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","termsOfService":"http://helloreverb.com/terms/","contact":{"name":"Swagger API team","url":"http://swagger.io/","email":"foo@example.com"},"license":{"name":"MIT","url":"http://opensource.org/licenses/MIT"},"version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/pets":{"get":{"description":"Returns all pets from the system that the user has access to","operationId":"findPets","parameters":[{"name":"tags","in":"query","description":"tags to filter by","style":"form","schema":{"type":"array","items":{"type":"string"}}},{"name":"limit","in":"query","description":"maximum number of results to return","schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/pet"}}},"application/xml":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/pet"}}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}},"post":{"description":"Creates a new pet in the store. Duplicates are allowed","operationId":"addPet","requestBody":{"description":"Pet to add to the store","content":{"application/json":{"schema":{"$ref":"#/components/schemas/newPet"}}},"required":true},"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pet"}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}}},"/pets/{id}":{"get":{"description":"Returns a user based on a single ID, if the user does not have access to the pet","operationId":"findPetById","parameters":[{"name":"id","in":"path","description":"ID of pet to fetch","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/pet"}},"application/xml":{"schema":{"$ref":"#/components/schemas/pet"}}}},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}},"delete":{"description":"deletes a single pet based on the ID supplied","operationId":"deletePet","parameters":[{"name":"id","in":"path","description":"ID of pet to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"pet deleted"},"4XX":{"description":"unexpected client error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}},"5XX":{"description":"unexpected server error","content":{"text/html":{"schema":{"$ref":"#/components/schemas/errorModel"}}}}}}}},"components":{"schemas":{"pet":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"newPet":{"required":["name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}},"errorModel":{"required":["code","message"],"type":"object","properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}}} \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt index 26442924a..7add70d4f 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=False.verified.txt @@ -1,5 +1,5 @@ { - "openapi": "3.0.1", + "openapi": "3.0.4", "info": { "title": "Swagger Petstore (Simple)", "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt index c5d124594..697540862 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.SerializeDuplicateExtensionsAsV3JsonWorksAsync_produceTerseOutput=True.verified.txt @@ -1 +1 @@ -{"openapi":"3.0.1","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/add/{operand1}/{operand2}":{"get":{"operationId":"addByOperand1AndByOperand2","parameters":[{"name":"operand1","in":"path","description":"The first operand","required":true,"schema":{"type":"integer","my-extension":4},"my-extension":4},{"name":"operand2","in":"path","description":"The second operand","required":true,"schema":{"type":"integer","my-extension":4},"my-extension":4}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}}}}}}}} \ No newline at end of file +{"openapi":"3.0.4","info":{"title":"Swagger Petstore (Simple)","description":"A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification","version":"1.0.0"},"servers":[{"url":"http://petstore.swagger.io/api"}],"paths":{"/add/{operand1}/{operand2}":{"get":{"operationId":"addByOperand1AndByOperand2","parameters":[{"name":"operand1","in":"path","description":"The first operand","required":true,"schema":{"type":"integer","my-extension":4},"my-extension":4},{"name":"operand2","in":"path","description":"The second operand","required":true,"schema":{"type":"integer","my-extension":4},"my-extension":4}],"responses":{"200":{"description":"pet response","content":{"application/json":{"schema":{"type":"array","items":{"required":["id","name"],"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"tag":{"type":"string"}}}}}}}}}}}} \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs index aa9433dfe..1b1e7fec8 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiDocumentTests.cs @@ -1732,7 +1732,7 @@ public void SerializeV2DocumentWithStyleAsNullDoesNotWriteOutStyleValue() // Arrange var expected = """ - openapi: 3.0.1 + openapi: 3.0.4 info: title: magic style version: 1.0.0 diff --git a/test/Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs b/test/Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs index 74e6a7d27..7578f3246 100644 --- a/test/Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs +++ b/test/Microsoft.OpenApi.Tests/Writers/OpenApiYamlWriterTests.cs @@ -367,7 +367,7 @@ public void WriteInlineSchema() var expected = """ - openapi: 3.0.1 + openapi: 3.0.4 info: title: Demo version: 1.0.0 @@ -497,7 +497,7 @@ public void WriteInlineRecursiveSchema() var expected = """ - openapi: 3.0.1 + openapi: 3.0.4 info: title: Demo version: 1.0.0 From 2cf4961233868e4fa90beede824ea4ac465eceee Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 07:57:17 -0500 Subject: [PATCH 09/52] chore: code linting Signed-off-by: Vincent Biret --- .../Services/OpenApiServiceTests.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs index a7ab42c03..575ccdc1e 100644 --- a/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs +++ b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs @@ -405,7 +405,7 @@ public async Task InvokeShowCommandAsync() var openApi = Path.Combine(".", "UtilityFiles", "SampleOpenApi.yml"); var args = new[] { "show", "-d", openApi, "-o", "sample.md" }; var parseResult = rootCommand.Parse(args); - var handler = rootCommand.Subcommands.Where(c => c.Name == "show").First().Handler; + var handler = rootCommand.Subcommands.First(c => c.Name == "show").Handler; var context = new InvocationContext(parseResult); await handler!.InvokeAsync(context); @@ -421,7 +421,7 @@ public async Task InvokePluginCommandAsync() var manifest = Path.Combine(".", "UtilityFiles", "exampleapimanifest.json"); var args = new[] { "plugin", "-m", manifest, "--of", AppDomain.CurrentDomain.BaseDirectory }; var parseResult = rootCommand.Parse(args); - var handler = rootCommand.Subcommands.Where(c => c.Name == "plugin").First().Handler; + var handler = rootCommand.Subcommands.First(c => c.Name == "plugin").Handler; var context = new InvocationContext(parseResult); await handler!.InvokeAsync(context); From 3d158d68ac06de8a0e7c7dc55749b33a553a7650 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 07:57:35 -0500 Subject: [PATCH 10/52] chore: bumps odata dependencies Signed-off-by: Vincent Biret --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 2b4ea5d33..3de24ad29 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -38,8 +38,8 @@ all - - + + diff --git a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj index ca868b9b6..2f23dd6b3 100644 --- a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj +++ b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj @@ -3,7 +3,7 @@ netstandard2.0 latest true - 1.6.22 + 1.6.23 OpenAPI.NET Readers for JSON and YAML documents true diff --git a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj index eb0ee6b12..9eacf3c17 100644 --- a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj +++ b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj @@ -3,7 +3,7 @@ netstandard2.0 Latest true - 1.6.22 + 1.6.23 .NET models with JSON and YAML writers for OpenAPI specification true From 8148d5c0259c23ee915b1db82d4295007ee33c3a Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 09:47:07 -0500 Subject: [PATCH 13/52] fix: removes actions steps that create extraneous tags Signed-off-by: Vincent Biret --- .github/workflows/ci-cd.yml | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 01861ee2d..13a34f171 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -3,15 +3,12 @@ name: CI/CD Pipeline on: [push, pull_request, workflow_dispatch] permissions: - contents: write + contents: read jobs: ci: name: Continuous Integration runs-on: ubuntu-latest - outputs: - latest_version: ${{ steps.tag_generator.outputs.new_version }} - is_default_branch: ${{ steps.conditionals_handler.outputs.is_default_branch }} env: ARTIFACTS_FOLDER: ${{ github.workspace }}/Artifacts GITHUB_RUN_NUMBER: ${{ github.run_number }} @@ -21,27 +18,6 @@ jobs: with: dotnet-version: 8.0.x - - name: Data gatherer - id: data_gatherer - shell: pwsh - run: | - # Get default branch - $repo = 'microsoft/OpenAPI.NET' - $defaultBranch = Invoke-RestMethod -Method GET -Uri https://api.github.com/repos/$repo | Select-Object -ExpandProperty default_branch - Write-Output "::set-output name=default_branch::$(echo $defaultBranch)" - - - name: Conditionals handler - id: conditionals_handler - shell: pwsh - run: | - $defaultBranch = "${{ steps.data_gatherer.outputs.default_branch }}" - $githubRef = "${{ github.ref }}" - $isDefaultBranch = 'false' - if ( $githubRef -like "*$defaultBranch*" ) { - $isDefaultBranch = 'true' - } - Write-Output "::set-output name=is_default_branch::$(echo $isDefaultBranch)" - - name: Checkout repository id: checkout_repo uses: actions/checkout@v4 @@ -49,15 +25,6 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} fetch-depth: 0 - - if: steps.conditionals_handler.outputs.is_default_branch == 'true' - name: Bump GH tag - id: tag_generator - uses: mathieudutour/github-tag-action@v6.2 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - default_bump: false - release_branches: ${{ steps.data_gatherer.outputs.default_branch }} - - name: Build projects id: build_projects shell: pwsh From 9c46b3c32d1574e5d7fa5e8ca92f7b05362f6674 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 09:50:49 -0500 Subject: [PATCH 14/52] fix: updates output syntax for tag version Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index 449142a91..614174516 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -218,10 +218,9 @@ extends: $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" #Set Variable $artifactName and $artifactVersion Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false; isOutput=true]$artifactVersion" - Write-Host "##vso[task.setvariable variable=artifactName; isSecret=false; isOutput=true]$artifactName.FullName" - echo "$artifactName" echo "$artifactVersion" displayName: 'Fetch Artifact Name' + name: getTagVersion - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: @@ -234,10 +233,10 @@ extends: condition: succeededOrFailed() inputs: gitHubConnection: 'Github-MaggieKimani1' - action: edit + action: create tagSource: userSpecifiedTag - tag: '$(artifactVersion)' - title: '$(artifactVersion)' + tag: '$(getTagVersion.artifactVersion)' + title: '$(getTagVersion.artifactVersion)' releaseNotesSource: inline assets: '$(Pipeline.Workspace)\**\*.exe' changeLogType: issueBased From de67664b0c706cfa438190805ccc1994a4549caf Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 09:55:32 -0500 Subject: [PATCH 15/52] ci: moves create github release to its own job Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 74 ++++++++++++++++++++++------------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index 614174516..a72bfe48b 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -213,14 +213,6 @@ extends: pool: vmImage: ubuntu-latest steps: - - pwsh: | - $artifactName = Get-ChildItem -Path $(Pipeline.Workspace)\Nugets -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 - $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" - #Set Variable $artifactName and $artifactVersion - Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false; isOutput=true]$artifactVersion" - echo "$artifactVersion" - displayName: 'Fetch Artifact Name' - name: getTagVersion - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: @@ -228,25 +220,6 @@ extends: packageParentPath: '$(Pipeline.Workspace)' nuGetFeedType: external publishFeedCredentials: 'OpenAPI Nuget Connection' - - task: GitHubRelease@1 - displayName: 'GitHub release (edit)' - condition: succeededOrFailed() - inputs: - gitHubConnection: 'Github-MaggieKimani1' - action: create - tagSource: userSpecifiedTag - tag: '$(getTagVersion.artifactVersion)' - title: '$(getTagVersion.artifactVersion)' - releaseNotesSource: inline - assets: '$(Pipeline.Workspace)\**\*.exe' - changeLogType: issueBased - changeLogLabels: '[ - { "label" : "feature-work", "feature", "displayName" : "New Features", "state" : "closed" }, - { "label" : "enhancement", "V2-Enhancement", "displayName" : "Enhancements", "state" : "closed" }, - { "label" : "bug", "bug-fix", "displayName" : "Bugs", "state" : "closed" }, - { "label" : "documentation", "doc", "displayName" : "Documentation", "state" : "closed"}, - { "label" : "dependencies", "displayName" : "Package Updates", "state" : "closed" } - ]' - deployment: deploy_lib templateContext: @@ -302,4 +275,49 @@ extends: packagesToPush: '$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Readers.*.nupkg' packageParentPath: '$(Pipeline.Workspace)' nuGetFeedType: external - publishFeedCredentials: 'OpenAPI Nuget Connection' \ No newline at end of file + publishFeedCredentials: 'OpenAPI Nuget Connection' + + - deployment: create_github_release + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: Nugets + targetPath: '$(Pipeline.Workspace)' + dependsOn: [] + environment: kiota-github-releases + strategy: + runOnce: + deploy: + pool: + vmImage: ubuntu-latest + steps: + - pwsh: | + $artifactName = Get-ChildItem -Path $(Pipeline.Workspace)\Nugets -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 + $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" + #Set Variable $artifactName and $artifactVersion + Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false; isOutput=true]$artifactVersion" + echo "$artifactVersion" + displayName: 'Fetch Artifact Name' + name: getTagVersion + - task: GitHubRelease@1 + displayName: 'GitHub release (edit)' + condition: succeededOrFailed() + inputs: + gitHubConnection: 'Github-MaggieKimani1' + action: create + tagSource: userSpecifiedTag + tag: '$(getTagVersion.artifactVersion)' + title: '$(getTagVersion.artifactVersion)' + releaseNotesSource: inline + assets: '$(Pipeline.Workspace)\**\*.exe' + changeLogType: issueBased + changeLogLabels: '[ + { "label" : "feature-work", "feature", "displayName" : "New Features", "state" : "closed" }, + { "label" : "enhancement", "V2-Enhancement", "displayName" : "Enhancements", "state" : "closed" }, + { "label" : "bug", "bug-fix", "displayName" : "Bugs", "state" : "closed" }, + { "label" : "documentation", "doc", "displayName" : "Documentation", "state" : "closed"}, + { "label" : "dependencies", "displayName" : "Package Updates", "state" : "closed" } + ]' + From e352fd3f6221333a1db0f65a9fd37a44a215646a Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 09:58:44 -0500 Subject: [PATCH 16/52] nit: fixes indent Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 36 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index a72bfe48b..5c07e63ee 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -302,22 +302,22 @@ extends: displayName: 'Fetch Artifact Name' name: getTagVersion - task: GitHubRelease@1 - displayName: 'GitHub release (edit)' - condition: succeededOrFailed() - inputs: - gitHubConnection: 'Github-MaggieKimani1' - action: create - tagSource: userSpecifiedTag - tag: '$(getTagVersion.artifactVersion)' - title: '$(getTagVersion.artifactVersion)' - releaseNotesSource: inline - assets: '$(Pipeline.Workspace)\**\*.exe' - changeLogType: issueBased - changeLogLabels: '[ - { "label" : "feature-work", "feature", "displayName" : "New Features", "state" : "closed" }, - { "label" : "enhancement", "V2-Enhancement", "displayName" : "Enhancements", "state" : "closed" }, - { "label" : "bug", "bug-fix", "displayName" : "Bugs", "state" : "closed" }, - { "label" : "documentation", "doc", "displayName" : "Documentation", "state" : "closed"}, - { "label" : "dependencies", "displayName" : "Package Updates", "state" : "closed" } - ]' + displayName: 'GitHub release (edit)' + condition: succeededOrFailed() + inputs: + gitHubConnection: 'Github-MaggieKimani1' + action: create + tagSource: userSpecifiedTag + tag: '$(getTagVersion.artifactVersion)' + title: '$(getTagVersion.artifactVersion)' + releaseNotesSource: inline + assets: '$(Pipeline.Workspace)\**\*.exe' + changeLogType: issueBased + changeLogLabels: '[ + { "label" : "feature-work", "feature", "displayName" : "New Features", "state" : "closed" }, + { "label" : "enhancement", "V2-Enhancement", "displayName" : "Enhancements", "state" : "closed" }, + { "label" : "bug", "bug-fix", "displayName" : "Bugs", "state" : "closed" }, + { "label" : "documentation", "doc", "displayName" : "Documentation", "state" : "closed"}, + { "label" : "dependencies", "displayName" : "Package Updates", "state" : "closed" } + ]' From 5400bbe44f8ed9767e89422670ee447a5f4fcf39 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 10:47:04 -0500 Subject: [PATCH 17/52] fix: reverts to a regular variable for the tag value Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index 5c07e63ee..d59d69cd3 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -297,10 +297,9 @@ extends: $artifactName = Get-ChildItem -Path $(Pipeline.Workspace)\Nugets -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" #Set Variable $artifactName and $artifactVersion - Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false; isOutput=true]$artifactVersion" + Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false;]$artifactVersion" echo "$artifactVersion" displayName: 'Fetch Artifact Name' - name: getTagVersion - task: GitHubRelease@1 displayName: 'GitHub release (edit)' condition: succeededOrFailed() @@ -308,8 +307,8 @@ extends: gitHubConnection: 'Github-MaggieKimani1' action: create tagSource: userSpecifiedTag - tag: '$(getTagVersion.artifactVersion)' - title: '$(getTagVersion.artifactVersion)' + tag: '$(artifactVersion)' + title: '$(artifactVersion)' releaseNotesSource: inline assets: '$(Pipeline.Workspace)\**\*.exe' changeLogType: issueBased From 320345ac96e9cccba67479ffde452b5d0b738c13 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 20 Dec 2024 10:55:27 -0500 Subject: [PATCH 18/52] ci: fix artefacts path --- .azure-pipelines/ci-build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index d59d69cd3..6686bba75 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -216,7 +216,7 @@ extends: - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: - packagesToPush: '$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Hidi.*.nupkg' + packagesToPush: '$(Pipeline.Workspace)/Microsoft.OpenApi.Hidi.*.nupkg' packageParentPath: '$(Pipeline.Workspace)' nuGetFeedType: external publishFeedCredentials: 'OpenAPI Nuget Connection' @@ -238,7 +238,7 @@ extends: vmImage: ubuntu-latest steps: - powershell: | - $fileNames = "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Hidi.*.nupkg", "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Readers.*.nupkg", "$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Workbench.*.nupkg" + $fileNames = "$(Pipeline.Workspace)/Microsoft.OpenApi.Hidi.*.nupkg", "$(Pipeline.Workspace)/Microsoft.OpenApi.Readers.*.nupkg", "$(Pipeline.Workspace)/Microsoft.OpenApi.Workbench.*.nupkg" foreach($fileName in $fileNames) { if(Test-Path $fileName) { rm $fileName -Verbose @@ -248,7 +248,7 @@ extends: - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: - packagesToPush: '$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.*.nupkg' + packagesToPush: '$(Pipeline.Workspace)/Microsoft.OpenApi.*.nupkg' packageParentPath: '$(Pipeline.Workspace)' nuGetFeedType: external publishFeedCredentials: 'OpenAPI Nuget Connection' @@ -272,7 +272,7 @@ extends: - task: 1ES.PublishNuget@1 displayName: 'NuGet push' inputs: - packagesToPush: '$(Pipeline.Workspace)/Nugets/Microsoft.OpenApi.Readers.*.nupkg' + packagesToPush: '$(Pipeline.Workspace)/Microsoft.OpenApi.Readers.*.nupkg' packageParentPath: '$(Pipeline.Workspace)' nuGetFeedType: external publishFeedCredentials: 'OpenAPI Nuget Connection' @@ -294,7 +294,7 @@ extends: vmImage: ubuntu-latest steps: - pwsh: | - $artifactName = Get-ChildItem -Path $(Pipeline.Workspace)\Nugets -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 + $artifactName = Get-ChildItem -Path $(Pipeline.Workspace) -Filter Microsoft.OpenApi.*.nupkg -recurse | select -First 1 $artifactVersion= $artifactName.Name -replace "Microsoft.OpenApi.", "" -replace ".nupkg", "" #Set Variable $artifactName and $artifactVersion Write-Host "##vso[task.setvariable variable=artifactVersion; isSecret=false;]$artifactVersion" From 6129ac89566d2908c543b0445c5015b9995c1771 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 2 Jan 2025 14:35:23 +0000 Subject: [PATCH 19/52] chore: releases hidi and aligns on 1.X Signed-off-by: GitHub --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 81c96d25d..447721709 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -9,7 +9,7 @@ enable hidi ./../../artifacts - 1.4.17 + 1.4.18 OpenAPI.NET CLI tool for slicing OpenAPI documents true @@ -38,8 +38,11 @@ all - - + + + + + @@ -33,7 +33,7 @@ - + runtime; build; native; contentfiles; analyzers; buildtransitive all @@ -41,7 +41,7 @@ - + From a2f9d07b9fddd1755edb691da8ba19cd194ae61e Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 16 Jan 2025 08:18:33 -0500 Subject: [PATCH 21/52] chore: aligns code owners with other branches --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8227ccb46..5bb7a32bd 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @irvinesunday @darrelmiller @zengin @gavinbarron @millicentachieng @MaggieKimani1 @andrueastman +* @irvinesunday @darrelmiller @gavinbarron @millicentachieng @MaggieKimani1 @andrueastman @baywet From f9debb121993dd0c94931d9f5ab710e135c4d35f Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 21 Jan 2025 09:33:29 +0300 Subject: [PATCH 22/52] Updated openApi.Odata version --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 976a4255a..a2e0e178a 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -41,7 +41,7 @@ - + From d1a366817c0f77f305c450ef95c9d67e64f65b4b Mon Sep 17 00:00:00 2001 From: Microsoft Graph DevX Tooling Date: Tue, 21 Jan 2025 10:19:35 +0300 Subject: [PATCH 23/52] Bump hidi version --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index a2e0e178a..ec13e898d 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -9,7 +9,7 @@ enable hidi ./../../artifacts - 1.4.19 + 1.4.20 OpenAPI.NET CLI tool for slicing OpenAPI documents true From 4d06f864148656e6554b2342831461bd13d407ae Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Wed, 22 Jan 2025 10:52:14 -0500 Subject: [PATCH 24/52] fix: a flaky behaviour for format property serialization Signed-off-by: Vincent Biret --- src/Microsoft.OpenApi/Models/OpenApiSchema.cs | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs index 957e0f946..fa7a504fa 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiSchema.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiSchema.cs @@ -560,14 +560,7 @@ internal void WriteAsItemsProperties(IOpenApiWriter writer) writer.WriteProperty(OpenApiConstants.Type, Type); // format - if (string.IsNullOrEmpty(Format)) - { - Format = AllOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format ?? - AnyOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format ?? - OneOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format; - } - - writer.WriteProperty(OpenApiConstants.Format, Format); + WriteFormatProperty(writer); // items writer.WriteOptionalObject(OpenApiConstants.Items, Items, (w, s) => s.SerializeAsV2(w)); @@ -620,20 +613,26 @@ internal void WriteAsItemsProperties(IOpenApiWriter writer) writer.WriteExtensions(Extensions, OpenApiSpecVersion.OpenApi2_0); } - internal void WriteAsSchemaProperties( - IOpenApiWriter writer, - ISet parentRequiredProperties, - string propertyName) + private void WriteFormatProperty(IOpenApiWriter writer) { - // format - if (string.IsNullOrEmpty(Format)) + var formatToWrite = Format; + if (string.IsNullOrEmpty(formatToWrite)) { - Format = AllOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format ?? + formatToWrite = AllOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format ?? AnyOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format ?? OneOf?.FirstOrDefault(static x => !string.IsNullOrEmpty(x.Format))?.Format; } - writer.WriteProperty(OpenApiConstants.Format, Format); + writer.WriteProperty(OpenApiConstants.Format, formatToWrite); + } + + internal void WriteAsSchemaProperties( + IOpenApiWriter writer, + ISet parentRequiredProperties, + string propertyName) + { + // format + WriteFormatProperty(writer); // title writer.WriteProperty(OpenApiConstants.Title, Title); From 7d561d02853a92f3247174951ca753439b8b571f Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Thu, 23 Jan 2025 09:36:46 +0300 Subject: [PATCH 25/52] chore: bump conversion library version and release Hidi --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index ec13e898d..d5522d583 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -9,7 +9,7 @@ enable hidi ./../../artifacts - 1.4.20 + 1.4.21 OpenAPI.NET CLI tool for slicing OpenAPI documents true @@ -41,7 +41,7 @@ - + From 7b03c82e78681057b1b6f9da3aecbaa44a19ee4b Mon Sep 17 00:00:00 2001 From: Andrew Omondi Date: Tue, 28 Jan 2025 16:07:23 +0300 Subject: [PATCH 26/52] chore: release Hidi --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index d5522d583..42ab0e96d 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -9,7 +9,7 @@ enable hidi ./../../artifacts - 1.4.21 + 1.4.22 OpenAPI.NET CLI tool for slicing OpenAPI documents true @@ -41,7 +41,7 @@ - + From 9bc10b08a84766e39cab5db891a594f9d38ec53e Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 3 Feb 2025 10:00:40 -0500 Subject: [PATCH 27/52] ci: adds release please configuration Signed-off-by: Vincent Biret --- .github/release-please.yml | 7 +++ .release-please-manifest.json | 3 ++ CHANGELOG.md | 7 +++ CONTRIBUTING.md | 52 +++++++++++++++++++ Directory.Build.props | 1 + release-please-config.json | 33 ++++++++++++ .../Microsoft.OpenApi.Hidi.csproj | 1 - .../Microsoft.OpenApi.Readers.csproj | 1 - .../Microsoft.OpenApi.csproj | 1 - 9 files changed, 103 insertions(+), 3 deletions(-) create mode 100644 .github/release-please.yml create mode 100644 .release-please-manifest.json create mode 100644 CHANGELOG.md create mode 100644 CONTRIBUTING.md create mode 100644 release-please-config.json diff --git a/.github/release-please.yml b/.github/release-please.yml new file mode 100644 index 000000000..c821fc166 --- /dev/null +++ b/.github/release-please.yml @@ -0,0 +1,7 @@ +manifest: true +primaryBranch: main +handleGHRelease: true +branches: + - branch: support/v1 + manifest: true + handleGHRelease: true \ No newline at end of file diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 000000000..38714b6bd --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "2.0.0-preview5" +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 000000000..52e80a16a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..a08924c7b --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,52 @@ +# Contributing to OpenAPI.net + +OpenAPI.net is a mono-repo containing source code for the following packages: + +## Libraries + +| Library | NuGet Release | +|----------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Microsoft.OpenAPI](./src/Microsoft.OpenAPI/README.md) | [![NuGet Version](https://img.shields.io/nuget/vpre/Microsoft.OpenAPI?label=Latest&logo=nuget)](https://www.nuget.org/packages/Microsoft.OpenAPI/) | +| [Microsoft.OpenAPI.Readers](./src/Microsoft.OpenAPI.Readers/README.md) | [![NuGet Version](https://img.shields.io/nuget/vpre/Microsoft.OpenAPI.Readers?label=Latest&logo=nuget)](https://www.nuget.org/packages/Microsoft.OpenAPI.Readers/) | +| [Microsoft.OpenAPI.Hidi](./src/Microsoft.OpenAPI.Hidi/README.md) | [![NuGet Version](https://img.shields.io/nuget/vpre/Microsoft.OpenAPI.Hidi?label=Latest&logo=nuget)](https://www.nuget.org/packages/Microsoft.OpenAPI.Hidi/) | + +OpenAPI.net is open to contributions. There are a couple of different recommended paths to get contributions into the released version of this library. + +__NOTE__ A signed a contribution license agreement is required for all contributions, and is checked automatically on new pull requests. Please read and sign [the agreement](https://cla.microsoft.com/) before starting any work for this repository. + +## File issues + +The best way to get started with a contribution is to start a dialog with the owners of this repository. Sometimes features will be under development or out of scope for this SDK and it's best to check before starting work on contribution. Discussions on bugs and potential fixes could point you to the write change to make. + +## Submit pull requests for bug fixes and features + +Feel free to submit a pull request with a linked issue against the __main__ branch. The main branch will be updated frequently. +## Commit message format + +To support our automated release process, pull requests are required to follow the [Conventional Commit](https://www.conventionalcommits.org/en/v1.0.0/) +format. +Each commit message consists of a __header__, an optional __body__ and an optional __footer__. The header is the first line of the commit and +MUST have a __type__ (see below for a list of types) and a __description__. An optional __scope__ can be added to the header to give extra context. + +``` +[optional scope]: + + + + +``` + +The recommended commit types used are: + +- __feat__ for feature updates (increments the _minor_ version) +- __fix__ for bug fixes (increments the _patch_ version) +- __perf__ for performance related changes e.g. optimizing an algorithm +- __refactor__ for code refactoring changes +- __test__ for test suite updates e.g. adding a test or fixing a test +- __style__ for changes that don't affect the meaning of code. e.g. formatting changes +- __docs__ for documentation updates e.g. ReadMe update or code documentation updates +- __build__ for build system changes (gradle updates, external dependency updates) +- __ci__ for CI configuration file changes e.g. updating a pipeline +- __chore__ for miscallaneous non-sdk changesin the repo e.g. removing an unused file + +Adding an exclamation mark after the commit type (`feat!`) or footer with the prefix __BREAKING CHANGE:__ will cause an increment of the _major_ version. \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props index 4fbb218f9..1b2409cb0 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,6 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET + 2.0.0-preview5 diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 000000000..e6d1fb148 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,33 @@ +{ + "bootstrap-sha": "8943e2ad40babb0204dedb11ad6f9273adf9cd53", + "exclude-paths": [ + ".azure-pipelines", + ".github", + ".idea", + ".vs", + ".vscode" + ], + "release-type": "simple", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": true, + "include-component-in-tag": false, + "include-v-in-tag": true, + "draft": false, + "prerelease": true, + "versioning": "prerelease", + "prerelease-type": "preview", + "packages": { + ".": { + "package-name": "Microsoft.OpenApi", + "changelog-path": "CHANGELOG.md", + "extra-files": [ + { + "type": "xml", + "path": "Directory.Build.props", + "xpath": "//Project/PropertyGroup/Version" + } + ] + } + }, + "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json" +} \ No newline at end of file diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 42ab0e96d..84f204108 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -9,7 +9,6 @@ enable hidi ./../../artifacts - 1.4.22 OpenAPI.NET CLI tool for slicing OpenAPI documents true diff --git a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj index 2f23dd6b3..8466b375c 100644 --- a/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj +++ b/src/Microsoft.OpenApi.Readers/Microsoft.OpenApi.Readers.csproj @@ -3,7 +3,6 @@ netstandard2.0 latest true - 1.6.23 OpenAPI.NET Readers for JSON and YAML documents true diff --git a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj index 9eacf3c17..9e93f7b55 100644 --- a/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj +++ b/src/Microsoft.OpenApi/Microsoft.OpenApi.csproj @@ -3,7 +3,6 @@ netstandard2.0 Latest true - 1.6.23 .NET models with JSON and YAML writers for OpenAPI specification true From ebf3605f94e0952a403a6266de2d52936da8bdc8 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 3 Feb 2025 10:06:34 -0500 Subject: [PATCH 28/52] ci: updates the ADO pipeline to match release please configuration Signed-off-by: Vincent Biret --- .azure-pipelines/ci-build.yml | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/.azure-pipelines/ci-build.yml b/.azure-pipelines/ci-build.yml index 6686bba75..968286c19 100644 --- a/.azure-pipelines/ci-build.yml +++ b/.azure-pipelines/ci-build.yml @@ -8,6 +8,9 @@ trigger: - main - dev - support/v1 + tags: + include: + - 'v*' pr: branches: include: @@ -194,7 +197,7 @@ extends: content: '*.nupkg' - stage: deploy - condition: and(or(contains(variables['build.sourceBranch'], 'refs/heads/main'),contains(variables['build.sourceBranch'], 'refs/heads/support/v1')), succeeded()) + condition: and(contains(variables['build.sourceBranch'], 'refs/tags/v'), succeeded()) dependsOn: build jobs: - deployment: deploy_hidi @@ -305,18 +308,10 @@ extends: condition: succeededOrFailed() inputs: gitHubConnection: 'Github-MaggieKimani1' - action: create + action: edit tagSource: userSpecifiedTag - tag: '$(artifactVersion)' - title: '$(artifactVersion)' + tag: 'v$(artifactVersion)' releaseNotesSource: inline assets: '$(Pipeline.Workspace)\**\*.exe' - changeLogType: issueBased - changeLogLabels: '[ - { "label" : "feature-work", "feature", "displayName" : "New Features", "state" : "closed" }, - { "label" : "enhancement", "V2-Enhancement", "displayName" : "Enhancements", "state" : "closed" }, - { "label" : "bug", "bug-fix", "displayName" : "Bugs", "state" : "closed" }, - { "label" : "documentation", "doc", "displayName" : "Documentation", "state" : "closed"}, - { "label" : "dependencies", "displayName" : "Package Updates", "state" : "closed" } - ]' + addChangeLog: false From 3aeedac75e742b30246becf294879c1544410fd0 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 3 Feb 2025 10:47:31 -0500 Subject: [PATCH 29/52] ci: configures release please for v1 branch Signed-off-by: Vincent Biret --- Directory.Build.props | 2 +- release-please-config.json | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 1b2409cb0..5874d8012 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 2.0.0-preview5 + 1.6.23 diff --git a/release-please-config.json b/release-please-config.json index e6d1fb148..cc36e0a0b 100644 --- a/release-please-config.json +++ b/release-please-config.json @@ -1,5 +1,5 @@ { - "bootstrap-sha": "8943e2ad40babb0204dedb11ad6f9273adf9cd53", + "bootstrap-sha": "dfa9c8a12ea2279905ee3e67e21212fa3b8bb95c", "exclude-paths": [ ".azure-pipelines", ".github", @@ -13,9 +13,6 @@ "include-component-in-tag": false, "include-v-in-tag": true, "draft": false, - "prerelease": true, - "versioning": "prerelease", - "prerelease-type": "preview", "packages": { ".": { "package-name": "Microsoft.OpenApi", From cff2f2d88668f18e09ca9279c085ead09402218b Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 3 Feb 2025 10:50:07 -0500 Subject: [PATCH 30/52] ci: fix starting version for release please Signed-off-by: Vincent Biret --- .release-please-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 38714b6bd..2a368a808 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "2.0.0-preview5" + ".": "1.6.23" } \ No newline at end of file From 55f0f54a97af23e4463f1ab4ac3b80c8f3e010c9 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 31 Mar 2025 15:02:12 -0400 Subject: [PATCH 31/52] fix: null reference on alternate keys during hidi transform --- src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj index 84f204108..10b7736d2 100644 --- a/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj +++ b/src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj @@ -40,7 +40,7 @@ - + From 7d2a4ca7561498200cec918cc46d55f751210878 Mon Sep 17 00:00:00 2001 From: Maggiekimani1 Date: Mon, 4 Nov 2024 12:14:32 +0300 Subject: [PATCH 32/52] update file path to moved file --- .../OpenApiReaderTests/OpenApiStreamReaderTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs index 5bca978b2..60e7eeeb6 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/OpenApiReaderTests/OpenApiStreamReaderTests.cs @@ -55,7 +55,7 @@ public async Task StreamShouldReadWhenInitializedAsync() BaseAddress = new Uri("https://raw.githubusercontent.com/OAI/OpenAPI-Specification/") }; - var stream = await httpClient.GetStreamAsync("main/tests/v3.0/pass/petstore.yaml"); + var stream = await httpClient.GetStreamAsync("20fe7a7b720a0e48e5842d002ac418b12a8201df/tests/v3.0/pass/petstore.yaml"); // Read V3 as YAML var openApiDocument = new OpenApiStreamReader().Read(stream, out var diagnostic); From a1d481b0a30949b28a433de12794a9bfcde8b1c9 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 1 Apr 2025 07:17:51 +0000 Subject: [PATCH 33/52] chore(support/v1): release 1.6.24 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 13 ++++++++++++- Directory.Build.props | 6 ++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2a368a808..b734e18f9 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.23" + ".": "1.6.24" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 52e80a16a..58c9afec2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,18 @@ # Changelog +## [1.6.24](https://github.com/microsoft/OpenAPI.NET/compare/1.6.23...v1.6.24) (2025-04-01) + + +### Bug Fixes + +* a flaky behaviour for format property serialization ([e072790](https://github.com/microsoft/OpenAPI.NET/commit/e07279095fcf99aeb4ea3c102516f14c501f250b)) +* a flaky behaviour for format property serialization ([4d06f86](https://github.com/microsoft/OpenAPI.NET/commit/4d06f864148656e6554b2342831461bd13d407ae)) +* null reference on alternate keys during hidi transform ([17247ed](https://github.com/microsoft/OpenAPI.NET/commit/17247edd07d070823cb9ea6c962997b52d71ff2b)) +* null reference on alternate keys during hidi transform ([55f0f54](https://github.com/microsoft/OpenAPI.NET/commit/55f0f54a97af23e4463f1ab4ac3b80c8f3e010c9)) + +## Changelog + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - diff --git a/Directory.Build.props b/Directory.Build.props index 5874d8012..c4d5e51ba 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,15 +12,13 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 1.6.23 + 1.6.24 true - + \ No newline at end of file From e3f584c365acf9c90afb7e828695130cfd217383 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 1 Apr 2025 08:54:16 -0400 Subject: [PATCH 34/52] ci: removes docker workflow to reduce noise and prepare for ADO pipeline updates in v1 --- .github/workflows/docker.yml | 42 ------------------------------------ 1 file changed, 42 deletions(-) delete mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 7e81a456d..000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Publish Docker image -on: - workflow_dispatch: - push: - branches: [main, dev, support/v1] - paths: ['src/Microsoft.OpenApi.Hidi/**', '.github/workflows/**'] -env: - REGISTRY: msgraphprod.azurecr.io - IMAGE_NAME: public/openapi/hidi -jobs: - push_to_registry: - environment: - name: acr - name: Push Docker image - runs-on: ubuntu-latest - steps: - - name: Check out the repo - uses: actions/checkout@v4 - - name: Login to registry - uses: docker/login-action@v3.3.0 - with: - username: ${{ secrets.ACR_USERNAME }} - password: ${{ secrets.ACR_PASSWORD }} - registry: ${{ env.REGISTRY }} - - run: | - $content = [XML](Get-Content ./src/Microsoft.OpenApi.Hidi/Microsoft.OpenApi.Hidi.csproj) - $version = $content.Project.PropertyGroup.Version - echo "::set-output name=version::${version}" - shell: pwsh - id: getversion - - name: Push to registry - Nightly - if: ${{ github.ref == 'refs/heads/dev' }} - uses: docker/build-push-action@v6.10.0 - with: - push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:nightly - - name: Push to registry - Release - if: ${{ github.ref == 'refs/heads/main' || github.ref == 'refs/heads/support/v1' }} - uses: docker/build-push-action@v6.10.0 - with: - push: true - tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ steps.getversion.outputs.version }} From aa12d532e7c186093de46d48d8810435b5664074 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Tue, 1 Apr 2025 15:32:01 -0400 Subject: [PATCH 35/52] security: aligns code owners with security team --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5bb7a32bd..af656d490 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @irvinesunday @darrelmiller @gavinbarron @millicentachieng @MaggieKimani1 @andrueastman @baywet +* @microsoft/openapi-write From 6de0f146481d5f043e81bcf90050057e02cfa843 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Wed, 9 Apr 2025 05:49:20 -0400 Subject: [PATCH 36/52] ci/performance testing to v1 (#2310) * ci: performance project scaffolding * chore: moves benchmark to dedicated directory Signed-off-by: Vincent Biret * chore: commits initial benchmark results Signed-off-by: Vincent Biret * ci: adds a comparison project for benchmark results Signed-off-by: Vincent Biret * ci: adds benchmark runs and comparison Signed-off-by: Vincent Biret * ci: renames empty models tests Signed-off-by: Vincent Biret * chore: refactors to a command structure Signed-off-by: Vincent Biret * chore: moves models to a dedicated source file chore: uses STJ attribute based serialization Signed-off-by: Vincent Biret * ci: fixes missing project argument Signed-off-by: Vincent Biret * ci: fixes reports path Signed-off-by: Vincent Biret * chore: moves policies to own directory Signed-off-by: Vincent Biret * chore: no warn on static method for perf test project * chore: linting Signed-off-by: Vincent Biret * chore: reduces run time for empty performance tests Signed-off-by: Vincent Biret * chore: linting Signed-off-by: Vincent Biret * ci: fixes working directory for benchmark run Signed-off-by: Vincent Biret * ci: adds basic infrastructure for descriptions based performance tests Signed-off-by: Vincent Biret * chore: refresh empty object tests Signed-off-by: Vincent Biret * ci: adds comparison run for descriptions comparisons Signed-off-by: Vincent Biret * ci: adds percentage based comparisons Signed-off-by: Vincent Biret * ci: adds large description to performance tests Signed-off-by: Vincent Biret * ci: adds yaml descriptions perf tests to compare Signed-off-by: Vincent Biret * chore: updates performance tests to work with v1 Signed-off-by: Vincent Biret * chore: updates performance tests results Signed-off-by: Vincent Biret * ci: adds truncation in percentage difference to reduce noise Signed-off-by: Vincent Biret * chore: fixes sln references --------- Signed-off-by: Vincent Biret --- .github/workflows/ci-cd.yml | 54 +++- .vscode/launch.json | 33 +- .vscode/tasks.json | 2 +- Microsoft.OpenApi.sln | 103 ++++++ .../performance.Descriptions-report-github.md | 18 ++ .../performance.Descriptions-report.csv | 5 + .../performance.Descriptions-report.html | 35 ++ .../performance.Descriptions-report.json | 1 + .../performance.EmptyModels-report-github.md | 42 +++ .../performance.EmptyModels-report.csv | 29 ++ .../performance.EmptyModels-report.html | 59 ++++ .../performance.EmptyModels-report.json | 1 + performance/benchmark/Descriptions.cs | 96 ++++++ performance/benchmark/EmptyModels.cs | 153 +++++++++ performance/benchmark/PerformanceTests.csproj | 28 ++ performance/benchmark/Program.cs | 13 + performance/resultsComparer/Logger.cs | 26 ++ performance/resultsComparer/Program.cs | 47 +++ .../handlers/AsyncCommandHandler.cs | 14 + .../handlers/CompareCommandHandler.cs | 96 ++++++ .../resultsComparer/models/BenchmarkReport.cs | 21 ++ .../policies/BaseBenchmarkComparisonPolicy.cs | 17 + .../policies/IBenchmarkComparisonPolicy.cs | 39 +++ .../policies/IdenticalMemoryUsagePolicy.cs | 17 + .../policies/PercentageMemoryUsagePolicy.cs | 66 ++++ .../resultsComparer/resultsComparer.csproj | 19 ++ .../Samples/OpenApiDocument/petStore.json | 298 ++++++++++++++++++ 27 files changed, 1329 insertions(+), 3 deletions(-) create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report-github.md create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.csv create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.html create mode 100644 performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json create mode 100644 performance/benchmark/Descriptions.cs create mode 100644 performance/benchmark/EmptyModels.cs create mode 100644 performance/benchmark/PerformanceTests.csproj create mode 100644 performance/benchmark/Program.cs create mode 100644 performance/resultsComparer/Logger.cs create mode 100644 performance/resultsComparer/Program.cs create mode 100644 performance/resultsComparer/handlers/AsyncCommandHandler.cs create mode 100644 performance/resultsComparer/handlers/CompareCommandHandler.cs create mode 100644 performance/resultsComparer/models/BenchmarkReport.cs create mode 100644 performance/resultsComparer/policies/BaseBenchmarkComparisonPolicy.cs create mode 100644 performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs create mode 100644 performance/resultsComparer/policies/IdenticalMemoryUsagePolicy.cs create mode 100644 performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs create mode 100644 performance/resultsComparer/resultsComparer.csproj create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/petStore.json diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index 13a34f171..c79c9bbf6 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -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 @@ -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" diff --git a/.vscode/launch.json b/.vscode/launch.json index 2fa4340b3..332c4876a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -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", diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 6040a610f..d2bd5722f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -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" ], diff --git a/Microsoft.OpenApi.sln b/Microsoft.OpenApi.sln index a39756a42..20558fe07 100644 --- a/Microsoft.OpenApi.sln +++ b/Microsoft.OpenApi.sln @@ -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 @@ -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} diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md new file mode 100644 index 000000000..240c19d61 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md @@ -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 | diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv new file mode 100644 index 000000000..0cf62d174 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.csv @@ -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 diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html new file mode 100644 index 000000000..0aef47715 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html @@ -0,0 +1,35 @@ + + + + +performance.Descriptions-20250408-125836 + + + + +

+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  
+
+ + + + + + + + +
MethodMean Error StdDevGen0Gen1Gen2Allocated
PetStoreYaml448.7 μs326.6 μs17.90 μs58.593811.7188-381.79 KB
PetStoreJson484.8 μs156.9 μs8.60 μs62.500015.6250-389.28 KB
GHESYaml1,008,349.6 μs565,392.0 μs30,991.04 μs66000.000023000.00004000.0000382785 KB
GHESJson1,039,447.0 μs267,501.0 μs14,662.63 μs67000.000023000.00004000.0000389970.77 KB
+ + diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json new file mode 100644 index 000000000..892133f8f --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json @@ -0,0 +1 @@ +{"Title":"performance.Descriptions-20250408-125836","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.14.0","OsVersion":"Windows 11 (10.0.26100.3476)","ProcessorName":"11th Gen Intel Core i7-1185G7 3.00GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":".NET 8.0.14 (8.0.1425.11118)","Architecture":"X64","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"RELEASE","DotNetCliVersion":"9.0.202","ChronometerFrequency":{"Hertz":10000000},"HardwareTimerKind":"Unknown"},"Benchmarks":[{"DisplayInfo":"Descriptions.PetStoreYaml: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"Descriptions","Method":"PetStoreYaml","MethodTitle":"PetStoreYaml","Parameters":"","FullName":"performance.Descriptions.PetStoreYaml","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[430962.5,448424.609375,466762.5],"N":3,"Min":430962.5,"LowerFence":412843.5546875,"Q1":439693.5546875,"Median":448424.609375,"Mean":448716.5364583333,"Q3":457593.5546875,"UpperFence":484443.5546875,"Max":466762.5,"InterquartileRange":17900,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":10335.600548048926,"Variance":320473916.06648767,"StandardDeviation":17901.78527595747,"Skewness":0.01630281274605768,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":448716.5364583333,"StandardError":10335.600548048926,"Level":12,"Margin":326595.2044764856,"Lower":122121.3319818477,"Upper":775311.740934819},"Percentiles":{"P0":430962.5,"P25":439693.5546875,"P50":448424.609375,"P67":454659.4921875,"P80":459427.34375,"P85":461261.1328125,"P90":463094.921875,"P95":464928.7109375,"P100":466762.5}},"Memory":{"Gen0Collections":15,"Gen1Collections":3,"Gen2Collections":0,"TotalOperations":256,"BytesAllocatedPerOperation":390948},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":218700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":80919200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":2,"Nanoseconds":4970300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":3,"Nanoseconds":5454700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":4,"Nanoseconds":7595100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":5,"Nanoseconds":9997100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":6,"Nanoseconds":10763800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":7,"Nanoseconds":15245500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":8,"Nanoseconds":14407500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":9,"Nanoseconds":16226500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":10,"Nanoseconds":20217600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":11,"Nanoseconds":19207100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":12,"Nanoseconds":22245200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":13,"Nanoseconds":24149700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":14,"Nanoseconds":25387200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":15,"Nanoseconds":26024400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":16,"Nanoseconds":30574300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":32,"Nanoseconds":64650800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":64,"Nanoseconds":116858500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":128,"Nanoseconds":223054700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":256,"Nanoseconds":501274900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":670711200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":216850900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":120592500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":110326400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":114796700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":119491200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":110326400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":114796700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":119491200}],"Metrics":[{"Value":58.59375,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":11.71875,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":390948,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"Descriptions.PetStoreJson: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"Descriptions","Method":"PetStoreJson","MethodTitle":"PetStoreJson","Parameters":"","FullName":"performance.Descriptions.PetStoreJson","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[476764.453125,493866.796875,483741.796875],"N":3,"Min":476764.453125,"LowerFence":467426.3671875,"Q1":480253.125,"Median":483741.796875,"Mean":484791.015625,"Q3":488804.296875,"UpperFence":501631.0546875,"Max":493866.796875,"InterquartileRange":8551.171875,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":4964.815720809945,"Variance":73948185.42480469,"StandardDeviation":8599.313078659521,"Skewness":0.12019554531662467,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":484791.015625,"StandardError":4964.815720809945,"Level":12,"Margin":156883.48228899823,"Lower":327907.5333360018,"Upper":641674.4979139982},"Percentiles":{"P0":476764.453125,"P25":480253.125,"P50":483741.796875,"P67":487184.296875,"P80":489816.796875,"P85":490829.296875,"P90":491841.796875,"P95":492854.296875,"P100":493866.796875}},"Memory":{"Gen0Collections":16,"Gen1Collections":4,"Gen2Collections":0,"TotalOperations":256,"BytesAllocatedPerOperation":398618},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":204400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":74845200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":2,"Nanoseconds":5232700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":3,"Nanoseconds":8938300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":4,"Nanoseconds":8756900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":5,"Nanoseconds":12130200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":6,"Nanoseconds":13670800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":7,"Nanoseconds":15085600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":8,"Nanoseconds":17489100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":9,"Nanoseconds":19881000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":10,"Nanoseconds":24048700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":11,"Nanoseconds":24023000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":12,"Nanoseconds":25868700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":13,"Nanoseconds":27774800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":14,"Nanoseconds":31021900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":15,"Nanoseconds":33073600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":16,"Nanoseconds":34407300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":32,"Nanoseconds":68990200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":64,"Nanoseconds":131760900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":128,"Nanoseconds":270020400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":256,"Nanoseconds":797198800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":316762500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":135095600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":121008500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":122051700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":126429900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":123837900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":256,"Nanoseconds":122051700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":256,"Nanoseconds":126429900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":256,"Nanoseconds":123837900}],"Metrics":[{"Value":62.5,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":15.625,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":398618,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"Descriptions.GHESYaml: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"Descriptions","Method":"GHESYaml","MethodTitle":"GHESYaml","Parameters":"","FullName":"performance.Descriptions.GHESYaml","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[980847200,1002272500,1041929000],"N":3,"Min":980847200,"LowerFence":945748500,"Q1":991559850,"Median":1002272500,"Mean":1008349566.6666666,"Q3":1022100750,"UpperFence":1067912100,"Max":1041929000,"InterquartileRange":30540900,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":17892685.910387456,"Variance":960444627263333.4,"StandardDeviation":30991041.080662865,"Skewness":0.18855104093019356,"Kurtosis":0.6666666666666676,"ConfidenceInterval":{"N":3,"Mean":1008349566.6666666,"StandardError":17892685.910387456,"Level":12,"Margin":565391956.3135251,"Lower":442957610.35314155,"Upper":1573741522.9801917},"Percentiles":{"P0":980847200,"P25":991559850,"P50":1002272500,"P67":1015755710,"P80":1026066400,"P85":1030032050,"P90":1033997700,"P95":1037963350,"P100":1041929000}},"Memory":{"Gen0Collections":66,"Gen1Collections":23,"Gen2Collections":4,"TotalOperations":1,"BytesAllocatedPerOperation":391971840},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":235100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1717916700},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1125041500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1067512300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":990634800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1051984200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":980847200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1002272500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1041929000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":980847200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1002272500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1041929000}],"Metrics":[{"Value":66000,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":23000,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":4000,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":391971840,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"Descriptions.GHESJson: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"Descriptions","Method":"GHESJson","MethodTitle":"GHESJson","Parameters":"","FullName":"performance.Descriptions.GHESJson","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[1056029200,1034116800,1028195100],"N":3,"Min":1028195100,"LowerFence":1010280375,"Q1":1031155950,"Median":1034116800,"Mean":1039447033.3333334,"Q3":1045073000,"UpperFence":1065948575,"Max":1056029200,"InterquartileRange":13917050,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":8465475.39998657,"Variance":214992821243333.34,"StandardDeviation":14662633.503001204,"Skewness":0.31548499549706766,"Kurtosis":0.6666666666666632,"ConfidenceInterval":{"N":3,"Mean":1039447033.3333334,"StandardError":8465475.39998657,"Level":12,"Margin":267501018.09722003,"Lower":771946015.2361133,"Upper":1306948051.4305534},"Percentiles":{"P0":1028195100,"P25":1031155950,"P50":1034116800,"P67":1041567016,"P80":1047264240,"P85":1049455480,"P90":1051646720,"P95":1053837960,"P100":1056029200}},"Memory":{"Gen0Collections":67,"Gen1Collections":23,"Gen2Collections":4,"TotalOperations":1,"BytesAllocatedPerOperation":399330064},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":215100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1596770300},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":600},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1210917200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1180982600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1064576000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1041839200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1056029200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1034116800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1028195100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1056029200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":1,"Nanoseconds":1034116800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":1,"Nanoseconds":1028195100}],"Metrics":[{"Value":67000,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":23000,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":4000,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":399330064,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]}]} diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report-github.md b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report-github.md new file mode 100644 index 000000000..61d64f997 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report-github.md @@ -0,0 +1,42 @@ +``` + +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 | Allocated | +|---------------------------- |-----------:|-----------:|----------:|-------:|-------:|----------:| +| EmptyApiCallback | 31.519 ns | 38.4672 ns | 2.1085 ns | 0.0331 | - | 208 B | +| EmptyApiComponents | 140.512 ns | 14.3041 ns | 0.7841 ns | 0.1428 | 0.0002 | 896 B | +| EmptyApiContact | 16.055 ns | 1.3280 ns | 0.0728 ns | 0.0204 | - | 128 B | +| EmptyApiDiscriminator | 15.220 ns | 4.7792 ns | 0.2620 ns | 0.0179 | - | 112 B | +| EmptyDocument | 29.049 ns | 3.8422 ns | 0.2106 ns | 0.0433 | - | 272 B | +| EmptyApiEncoding | 33.103 ns | 57.7474 ns | 3.1653 ns | 0.0344 | - | 216 B | +| EmptyApiExample | 16.734 ns | 3.4981 ns | 0.1917 ns | 0.0242 | - | 152 B | +| EmptyApiExternalDocs | 16.954 ns | 1.2380 ns | 0.0679 ns | 0.0191 | - | 120 B | +| EmptyApiHeader | 43.507 ns | 2.5086 ns | 0.1375 ns | 0.0523 | - | 328 B | +| EmptyApiInfo | 16.481 ns | 0.3538 ns | 0.0194 ns | 0.0242 | - | 152 B | +| EmptyApiLicense | 17.546 ns | 3.3792 ns | 0.1852 ns | 0.0191 | - | 120 B | +| EmptyApiLink | 31.159 ns | 2.9456 ns | 0.1615 ns | 0.0395 | - | 248 B | +| EmptyApiMediaType | 48.673 ns | 40.1509 ns | 2.2008 ns | 0.0471 | - | 296 B | +| EmptyApiOAuthFlow | 31.660 ns | 6.6152 ns | 0.3626 ns | 0.0344 | - | 216 B | +| EmptyApiOAuthFlows | 16.520 ns | 8.7989 ns | 0.4823 ns | 0.0217 | - | 136 B | +| EmptyApiOperation | 74.102 ns | 5.9538 ns | 0.3263 ns | 0.0930 | - | 584 B | +| EmptyApiParameter | 44.586 ns | 25.6169 ns | 1.4041 ns | 0.0548 | - | 344 B | +| EmptyApiPathItem | 32.387 ns | 15.2578 ns | 0.8363 ns | 0.0485 | - | 304 B | +| EmptyApiPaths | 34.939 ns | 23.7764 ns | 1.3033 ns | 0.0268 | - | 168 B | +| EmptyApiRequestBody | 33.944 ns | 16.6503 ns | 0.9127 ns | 0.0344 | - | 216 B | +| EmptyApiResponse | 59.113 ns | 32.6796 ns | 1.7913 ns | 0.0625 | - | 392 B | +| EmptyApiResponses | 27.691 ns | 4.1005 ns | 0.2248 ns | 0.0268 | - | 168 B | +| EmptyApiSchema | 67.181 ns | 76.4118 ns | 4.1884 ns | 0.1109 | 0.0002 | 696 B | +| EmptyApiSecurityRequirement | 8.867 ns | 7.3926 ns | 0.4052 ns | 0.0166 | - | 104 B | +| EmptyApiSecurityScheme | 18.258 ns | 7.2938 ns | 0.3998 ns | 0.0280 | - | 176 B | +| EmptyApiServer | 30.928 ns | 6.3259 ns | 0.3467 ns | 0.0331 | - | 208 B | +| EmptyApiServerVariable | 17.401 ns | 1.4698 ns | 0.0806 ns | 0.0204 | - | 128 B | +| EmptyApiTag | 17.470 ns | 17.4659 ns | 0.9574 ns | 0.0229 | - | 144 B | diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.csv b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.csv new file mode 100644 index 000000000..f77db70e3 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.csv @@ -0,0 +1,29 @@ +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,Allocated +EmptyApiCallback,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,31.519 ns,38.4672 ns,2.1085 ns,0.0331,0.0000,208 B +EmptyApiComponents,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,140.512 ns,14.3041 ns,0.7841 ns,0.1428,0.0002,896 B +EmptyApiContact,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,16.055 ns,1.3280 ns,0.0728 ns,0.0204,0.0000,128 B +EmptyApiDiscriminator,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,15.220 ns,4.7792 ns,0.2620 ns,0.0179,0.0000,112 B +EmptyDocument,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,29.049 ns,3.8422 ns,0.2106 ns,0.0433,0.0000,272 B +EmptyApiEncoding,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,33.103 ns,57.7474 ns,3.1653 ns,0.0344,0.0000,216 B +EmptyApiExample,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,16.734 ns,3.4981 ns,0.1917 ns,0.0242,0.0000,152 B +EmptyApiExternalDocs,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,16.954 ns,1.2380 ns,0.0679 ns,0.0191,0.0000,120 B +EmptyApiHeader,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,43.507 ns,2.5086 ns,0.1375 ns,0.0523,0.0000,328 B +EmptyApiInfo,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,16.481 ns,0.3538 ns,0.0194 ns,0.0242,0.0000,152 B +EmptyApiLicense,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,17.546 ns,3.3792 ns,0.1852 ns,0.0191,0.0000,120 B +EmptyApiLink,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,31.159 ns,2.9456 ns,0.1615 ns,0.0395,0.0000,248 B +EmptyApiMediaType,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,48.673 ns,40.1509 ns,2.2008 ns,0.0471,0.0000,296 B +EmptyApiOAuthFlow,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,31.660 ns,6.6152 ns,0.3626 ns,0.0344,0.0000,216 B +EmptyApiOAuthFlows,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,16.520 ns,8.7989 ns,0.4823 ns,0.0217,0.0000,136 B +EmptyApiOperation,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,74.102 ns,5.9538 ns,0.3263 ns,0.0930,0.0000,584 B +EmptyApiParameter,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,44.586 ns,25.6169 ns,1.4041 ns,0.0548,0.0000,344 B +EmptyApiPathItem,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,32.387 ns,15.2578 ns,0.8363 ns,0.0485,0.0000,304 B +EmptyApiPaths,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,34.939 ns,23.7764 ns,1.3033 ns,0.0268,0.0000,168 B +EmptyApiRequestBody,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,33.944 ns,16.6503 ns,0.9127 ns,0.0344,0.0000,216 B +EmptyApiResponse,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,59.113 ns,32.6796 ns,1.7913 ns,0.0625,0.0000,392 B +EmptyApiResponses,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,27.691 ns,4.1005 ns,0.2248 ns,0.0268,0.0000,168 B +EmptyApiSchema,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,67.181 ns,76.4118 ns,4.1884 ns,0.1109,0.0002,696 B +EmptyApiSecurityRequirement,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,8.867 ns,7.3926 ns,0.4052 ns,0.0166,0.0000,104 B +EmptyApiSecurityScheme,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,18.258 ns,7.2938 ns,0.3998 ns,0.0280,0.0000,176 B +EmptyApiServer,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,30.928 ns,6.3259 ns,0.3467 ns,0.0331,0.0000,208 B +EmptyApiServerVariable,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,17.401 ns,1.4698 ns,0.0806 ns,0.0204,0.0000,128 B +EmptyApiTag,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,17.470 ns,17.4659 ns,0.9574 ns,0.0229,0.0000,144 B diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.html b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.html new file mode 100644 index 000000000..3366c5119 --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.html @@ -0,0 +1,59 @@ + + + + +performance.EmptyModels-20250408-125919 + + + + +

+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 MeanErrorStdDevGen0Gen1Allocated
EmptyApiCallback31.519 ns38.4672 ns2.1085 ns0.0331-208 B
EmptyApiComponents140.512 ns14.3041 ns0.7841 ns0.14280.0002896 B
EmptyApiContact16.055 ns1.3280 ns0.0728 ns0.0204-128 B
EmptyApiDiscriminator15.220 ns4.7792 ns0.2620 ns0.0179-112 B
EmptyDocument29.049 ns3.8422 ns0.2106 ns0.0433-272 B
EmptyApiEncoding33.103 ns57.7474 ns3.1653 ns0.0344-216 B
EmptyApiExample16.734 ns3.4981 ns0.1917 ns0.0242-152 B
EmptyApiExternalDocs16.954 ns1.2380 ns0.0679 ns0.0191-120 B
EmptyApiHeader43.507 ns2.5086 ns0.1375 ns0.0523-328 B
EmptyApiInfo16.481 ns0.3538 ns0.0194 ns0.0242-152 B
EmptyApiLicense17.546 ns3.3792 ns0.1852 ns0.0191-120 B
EmptyApiLink31.159 ns2.9456 ns0.1615 ns0.0395-248 B
EmptyApiMediaType48.673 ns40.1509 ns2.2008 ns0.0471-296 B
EmptyApiOAuthFlow31.660 ns6.6152 ns0.3626 ns0.0344-216 B
EmptyApiOAuthFlows16.520 ns8.7989 ns0.4823 ns0.0217-136 B
EmptyApiOperation74.102 ns5.9538 ns0.3263 ns0.0930-584 B
EmptyApiParameter44.586 ns25.6169 ns1.4041 ns0.0548-344 B
EmptyApiPathItem32.387 ns15.2578 ns0.8363 ns0.0485-304 B
EmptyApiPaths34.939 ns23.7764 ns1.3033 ns0.0268-168 B
EmptyApiRequestBody33.944 ns16.6503 ns0.9127 ns0.0344-216 B
EmptyApiResponse59.113 ns32.6796 ns1.7913 ns0.0625-392 B
EmptyApiResponses27.691 ns4.1005 ns0.2248 ns0.0268-168 B
EmptyApiSchema67.181 ns76.4118 ns4.1884 ns0.11090.0002696 B
EmptyApiSecurityRequirement8.867 ns7.3926 ns0.4052 ns0.0166-104 B
EmptyApiSecurityScheme18.258 ns7.2938 ns0.3998 ns0.0280-176 B
EmptyApiServer30.928 ns6.3259 ns0.3467 ns0.0331-208 B
EmptyApiServerVariable17.401 ns1.4698 ns0.0806 ns0.0204-128 B
EmptyApiTag17.470 ns17.4659 ns0.9574 ns0.0229-144 B
+ + diff --git a/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json new file mode 100644 index 000000000..0f2b7092a --- /dev/null +++ b/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json @@ -0,0 +1 @@ +{"Title":"performance.EmptyModels-20250408-125919","HostEnvironmentInfo":{"BenchmarkDotNetCaption":"BenchmarkDotNet","BenchmarkDotNetVersion":"0.14.0","OsVersion":"Windows 11 (10.0.26100.3476)","ProcessorName":"11th Gen Intel Core i7-1185G7 3.00GHz","PhysicalProcessorCount":1,"PhysicalCoreCount":4,"LogicalCoreCount":8,"RuntimeVersion":".NET 8.0.14 (8.0.1425.11118)","Architecture":"X64","HasAttachedDebugger":false,"HasRyuJit":true,"Configuration":"RELEASE","DotNetCliVersion":"9.0.202","ChronometerFrequency":{"Hertz":10000000},"HardwareTimerKind":"Unknown"},"Benchmarks":[{"DisplayInfo":"EmptyModels.EmptyApiCallback: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiCallback","MethodTitle":"EmptyApiCallback","Parameters":"","FullName":"performance.EmptyModels.EmptyApiCallback","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[30.08078932762146,30.537480115890503,33.9397132396698],"N":3,"Min":30.08078932762146,"LowerFence":27.414941787719727,"Q1":30.30913472175598,"Median":30.537480115890503,"Mean":31.51932756106059,"Q3":32.23859667778015,"UpperFence":35.132789611816406,"Max":33.9397132396698,"InterquartileRange":1.92946195602417,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":1.2173525569769403,"Variance":4.445841743934882,"StandardDeviation":2.108516479407947,"Skewness":0.36468592242537184,"Kurtosis":0.6666666666666659,"ConfidenceInterval":{"N":3,"Mean":31.51932756106059,"StandardError":1.2173525569769403,"Level":12,"Margin":38.46718973102233,"Lower":-6.947862169961741,"Upper":69.98651729208292},"Percentiles":{"P0":30.08078932762146,"P25":30.30913472175598,"P50":30.537480115890503,"P67":31.694239377975464,"P80":32.57881999015808,"P85":32.91904330253601,"P90":33.25926661491394,"P95":33.59948992729187,"P100":33.9397132396698}},"Memory":{"Gen0Collections":556,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":208},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":268700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":392600},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":701400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":584100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":6300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":14700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":23700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":28600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":37100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":89000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":134000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":293600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":447000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":825200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1569800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3789800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":5039900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":7788900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":13586400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":32531400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":62922700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":90477700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":153937400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":282009000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":578504300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":64928400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":67153900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":66966800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":57447100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53764500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54128700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":54170700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":57743700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":55316900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":56620200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":56546400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":56351000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":54662000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":58830700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54726800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":54596600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":54105400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53874500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":54595100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":55311700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":54210400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":54353600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":54813400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":53224400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":570706000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":562724700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":567557900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":559333900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":566995900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":624075900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":504671900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":512333900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":569413900}],"Metrics":[{"Value":0.03314018249511719,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":208,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiComponents: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiComponents","MethodTitle":"EmptyApiComponents","Parameters":"","FullName":"performance.EmptyModels.EmptyApiComponents","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[140.12086391448975,140.00005722045898,141.4144515991211],"N":3,"Min":140.00005722045898,"LowerFence":138.99966478347778,"Q1":140.06046056747437,"Median":140.12086391448975,"Mean":140.5117909113566,"Q3":140.76765775680542,"UpperFence":141.828453540802,"Max":141.4144515991211,"InterquartileRange":0.7071971893310547,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.45267567575371637,"Variance":0.6147458022572513,"StandardDeviation":0.7840572697560116,"Skewness":0.3746457795623959,"Kurtosis":0.6666666666666846,"ConfidenceInterval":{"N":3,"Mean":140.5117909113566,"StandardError":0.45267567575371637,"Level":12,"Margin":14.304123325685676,"Lower":126.20766758567092,"Upper":154.81591423704228},"Percentiles":{"P0":140.00005722045898,"P25":140.06046056747437,"P50":140.12086391448975,"P67":140.5606837272644,"P80":140.89701652526855,"P85":141.0263752937317,"P90":141.15573406219482,"P95":141.28509283065796,"P100":141.4144515991211}},"Memory":{"Gen0Collections":599,"Gen1Collections":1,"Gen2Collections":0,"TotalOperations":4194304,"BytesAllocatedPerOperation":896},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":248400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":879100},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":395800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":444200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":27400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":30900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":38500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":73900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":152400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":299000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":441700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":968600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":2073000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":4028900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":5980200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":8841700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":18852500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":38781000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":73419200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":95780700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":154618500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":315314200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":620012200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":4194304,"Nanoseconds":16312400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":4194304,"Nanoseconds":16587400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":4194304,"Nanoseconds":16424700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":4194304,"Nanoseconds":16393100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":4194304,"Nanoseconds":16193200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":4194304,"Nanoseconds":16304800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":4194304,"Nanoseconds":16405200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":4194304,"Nanoseconds":16744100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":4194304,"Nanoseconds":16844300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":4194304,"Nanoseconds":16242000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":4194304,"Nanoseconds":16364900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":4194304,"Nanoseconds":16398000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":4194304,"Nanoseconds":16539500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":4194304,"Nanoseconds":16586100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":4194304,"Nanoseconds":16795100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":4194304,"Nanoseconds":16400700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":4194304,"Nanoseconds":16409400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":4194304,"Nanoseconds":16336000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":4194304,"Nanoseconds":16505000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":4194304,"Nanoseconds":16211100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":4194304,"Nanoseconds":16452500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":4194304,"Nanoseconds":16201900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":4194304,"Nanoseconds":16428900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":4194304,"Nanoseconds":16142000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":4194304,"Nanoseconds":14183100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":4194304,"Nanoseconds":626679900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":4194304,"Nanoseconds":618370900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":4194304,"Nanoseconds":591042000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":4194304,"Nanoseconds":604110200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":4194304,"Nanoseconds":603603500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":4194304,"Nanoseconds":609535900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":4194304,"Nanoseconds":587709500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":4194304,"Nanoseconds":587202800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":4194304,"Nanoseconds":593135200}],"Metrics":[{"Value":0.14281272888183594,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0.0002384185791015625,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":896,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiContact: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiContact","MethodTitle":"EmptyApiContact","Parameters":"","FullName":"performance.EmptyModels.EmptyApiContact","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[16.11763834953308,15.975335240364075,16.073083877563477],"N":3,"Min":15.975335240364075,"LowerFence":15.91748222708702,"Q1":16.024209558963776,"Median":16.073083877563477,"Mean":16.055352489153545,"Q3":16.09536111354828,"UpperFence":16.202088445425034,"Max":16.11763834953308,"InterquartileRange":0.07115155458450317,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.04202517230184567,"Variance":0.0052983453209994496,"StandardDeviation":0.072789733623633,"Skewness":-0.22914238865288797,"Kurtosis":0.6666666666666816,"ConfidenceInterval":{"N":3,"Mean":16.055352489153545,"StandardError":0.04202517230184567,"Level":12,"Margin":1.327955707776629,"Lower":14.727396781376916,"Upper":17.383308196930173},"Percentiles":{"P0":15.975335240364075,"P25":16.024209558963776,"P50":16.073083877563477,"P67":16.088232398033142,"P80":16.09981656074524,"P85":16.1042720079422,"P90":16.10872745513916,"P95":16.11318290233612,"P100":16.11763834953308}},"Memory":{"Gen0Collections":684,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":128},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":463300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":313500},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":425500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":410000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":3500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":15800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":24100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":31900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":48300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":103900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":129500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":171100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":278500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":601100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":946400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":1865000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3422900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":7325500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":9677000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":19335200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":39903300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":56047400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":82348700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":163488700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":330785600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":660880100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":130175800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":122097100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":107783100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":109154500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":109704900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":107227500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":106220600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105551500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104975500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":105063000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":104318400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":105293200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104808400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":107691000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":104330600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105033100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":106053800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105117600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105622200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104862300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":106003200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104520300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":105363400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":105045800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":105610900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":638672800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":635988900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":644340500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":645935800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":641160900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":644440800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":540818200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":536043300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":539323200}],"Metrics":[{"Value":0.020384788513183594,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":128,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiDiscriminator: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiDiscriminator","MethodTitle":"EmptyApiDiscriminator","Parameters":"","FullName":"performance.EmptyModels.EmptyApiDiscriminator","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[15.51593542098999,15.017026662826538,15.127936005592346],"N":3,"Min":15.017026662826538,"LowerFence":14.698299765586853,"Q1":15.072481334209442,"Median":15.127936005592346,"Mean":15.220299363136292,"Q3":15.321935713291168,"UpperFence":15.696117281913757,"Max":15.51593542098999,"InterquartileRange":0.24945437908172607,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.15124563862102217,"Variance":0.0686257296056425,"StandardDeviation":0.261965130514812,"Skewness":0.3087491059359832,"Kurtosis":0.6666666666666667,"ConfidenceInterval":{"N":3,"Mean":15.220299363136292,"StandardError":0.15124563862102217,"Level":12,"Margin":4.77921916989468,"Lower":10.44108019324161,"Upper":19.999518533030972},"Percentiles":{"P0":15.017026662826538,"P25":15.072481334209442,"P50":15.127936005592346,"P67":15.259855806827545,"P80":15.360735654830933,"P85":15.399535596370697,"P90":15.438335537910461,"P95":15.477135479450226,"P100":15.51593542098999}},"Memory":{"Gen0Collections":599,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":112},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":357300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":240900},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":392100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":468400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":3000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":3100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":19100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":17600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":22900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":49200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":74900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":141100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":243400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":434500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":956500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":1851100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3799000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":6332400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":9581100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":20180100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":38321400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":70166000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":94054400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":159424700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":317373500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":636058500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":131040300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":125474600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":108212600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":107456300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":108966100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105795800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":106507000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":106070000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":107084700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":104692200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104975400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105386900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":104583600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105707800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105944800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105999500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105420300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104953000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":106373900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":107298800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":104711900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":104560300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":105364200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":618443300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":613767400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":624003200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":626015300},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":609274700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":612996200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":520628400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":503887800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":507609300}],"Metrics":[{"Value":0.017851591110229492,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":112,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyDocument: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyDocument","MethodTitle":"EmptyDocument","Parameters":"","FullName":"performance.EmptyModels.EmptyDocument","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[29.24368977546692,29.079055786132812,28.82561683654785],"N":3,"Min":28.82561683654785,"LowerFence":28.63878160715103,"Q1":28.952336311340332,"Median":29.079055786132812,"Mean":29.049454132715862,"Q3":29.161372780799866,"UpperFence":29.474927484989166,"Max":29.24368977546692,"InterquartileRange":0.2090364694595337,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.121591445666584,"Variance":0.044353438977869544,"StandardDeviation":0.21060256166027408,"Skewness":-0.13778006949149382,"Kurtosis":0.6666666666666701,"ConfidenceInterval":{"N":3,"Mean":29.049454132715862,"StandardError":0.121591445666584,"Level":12,"Margin":3.8421747120989367,"Lower":25.207279420616924,"Upper":32.8916288448148},"Percentiles":{"P0":28.82561683654785,"P25":28.952336311340332,"P50":29.079055786132812,"P67":29.13503134250641,"P80":29.177836179733276,"P85":29.194299578666687,"P90":29.210762977600098,"P95":29.22722637653351,"P100":29.24368977546692}},"Memory":{"Gen0Collections":727,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":272},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":212900},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":549000},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":454100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":604300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":15000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":22400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":17400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":26300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":43800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":79200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":211600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":325100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":571900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1248500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2251100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3498900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":4972900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":10092300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":18178700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":35174800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":56533800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":74158000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":137226900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":274369600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":552053400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":64731300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":64936600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65770300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":58044200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":55619500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54168500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53836500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53520700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":54332900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53429600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53334000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53669500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":53581900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53485500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53610500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53246800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53922600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53951300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53795900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":54415300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":54431000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":54051200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53199800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53274000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":53132900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":553557200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":551265800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":545061400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":544238200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":541476100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":537224100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":490627700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":487865600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":483613600}],"Metrics":[{"Value":0.043332576751708984,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":272,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiEncoding: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiEncoding","MethodTitle":"EmptyApiEncoding","Parameters":"","FullName":"performance.EmptyModels.EmptyApiEncoding","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[36.74762845039368,31.522220373153687,31.03988766670227],"N":3,"Min":31.03988766670227,"LowerFence":27.000248432159424,"Q1":31.28105401992798,"Median":31.522220373153687,"Mean":33.10324549674988,"Q3":34.13492441177368,"UpperFence":38.415729999542236,"Max":36.74762845039368,"InterquartileRange":2.853870391845703,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":1.8275034468307954,"Variance":10.019306544535311,"StandardDeviation":3.1653288209181856,"Skewness":0.3748701257434468,"Kurtosis":0.6666666666666667,"ConfidenceInterval":{"N":3,"Mean":33.10324549674988,"StandardError":1.8275034468307954,"Level":12,"Margin":57.747380921358776,"Lower":-24.644135424608898,"Upper":90.85062641810865},"Percentiles":{"P0":31.03988766670227,"P25":31.28105401992798,"P50":31.522220373153687,"P67":33.29885911941528,"P80":34.65746521949768,"P85":35.18000602722168,"P90":35.70254683494568,"P95":36.22508764266968,"P100":36.74762845039368}},"Memory":{"Gen0Collections":577,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":216},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":230500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":397300},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":582200},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":774400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":7100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":19500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":32800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":24800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":35500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":60500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":128700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":236400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":396100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":808100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1919600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3954600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":4675900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":9363900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":17835900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":34921000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":62584700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":95899600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":146565700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":292811400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":583375900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":64345300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":64748400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65089500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":56657000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52850900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52667100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52920100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53053800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53150900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53905400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53480100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53381400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":53270900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":52705200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52452800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53073900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52348200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52299800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53269300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52595700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":52987200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52758300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53771000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53225200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":54408300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":595893300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":576858300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":629009700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":669596800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":581929000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":573836800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":616522900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":528855100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":520762900}],"Metrics":[{"Value":0.03439188003540039,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":216,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiExample: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiExample","MethodTitle":"EmptyApiExample","Parameters":"","FullName":"performance.EmptyModels.EmptyApiExample","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[16.747409105300903,16.53594672679901,16.918733716011047],"N":3,"Min":16.53594672679901,"LowerFence":16.35458767414093,"Q1":16.641677916049957,"Median":16.747409105300903,"Mean":16.73402984937032,"Q3":16.833071410655975,"UpperFence":17.120161652565002,"Max":16.918733716011047,"InterquartileRange":0.19139349460601807,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.11070339221608626,"Variance":0.036765723144445886,"StandardDeviation":0.19174389988848636,"Skewness":-0.0694369687158318,"Kurtosis":0.6666666666666651,"ConfidenceInterval":{"N":3,"Mean":16.73402984937032,"StandardError":0.11070339221608626,"Level":12,"Margin":3.4981225182776994,"Lower":13.23590733109262,"Upper":20.23215236764802},"Percentiles":{"P0":16.53594672679901,"P25":16.641677916049957,"P50":16.747409105300903,"P67":16.805659472942352,"P80":16.85020387172699,"P85":16.867336332798004,"P90":16.88446879386902,"P95":16.901601254940033,"P100":16.918733716011047}},"Memory":{"Gen0Collections":813,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":152},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":216000},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":424800},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":449100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":452500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":5400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":13900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":11900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":18000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":32500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":46100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":87400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":155300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":315400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":964000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1542400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2175400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3533000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":5780100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":9289400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":20096800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":39440900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":77394800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":98916400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":174164100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":365084400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":656288800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":129858300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":118277500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104879700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105561400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":105498500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":106281400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":104274200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":105015000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":107038700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":106932500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105885800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":106187900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105770400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":104108700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":107191000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105375400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104755600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":105521300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104459500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":104892300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":104481900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":105401500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":661991600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":657677600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":665561800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":667351300},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":660255800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":673100000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":561949800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":554854300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":567698500}],"Metrics":[{"Value":0.02422928810119629,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":152,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiExternalDocs: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiExternalDocs","MethodTitle":"EmptyApiExternalDocs","Parameters":"","FullName":"performance.EmptyModels.EmptyApiExternalDocs","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[16.98138415813446,17.004477977752686,16.877105832099915],"N":3,"Min":16.877105832099915,"LowerFence":16.83371588587761,"Q1":16.929244995117188,"Median":16.98138415813446,"Mean":16.954322655995686,"Q3":16.992931067943573,"UpperFence":17.08846017718315,"Max":17.004477977752686,"InterquartileRange":0.0636860728263855,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.03917975474465018,"Variance":0.004605159545552814,"StandardDeviation":0.06786132584582188,"Skewness":-0.3353619865107197,"Kurtosis":0.6666666666666432,"ConfidenceInterval":{"N":3,"Mean":16.954322655995686,"StandardError":0.03917975474465018,"Level":12,"Margin":1.2380432034578868,"Lower":15.7162794525378,"Upper":18.192365859453574},"Percentiles":{"P0":16.877105832099915,"P25":16.929244995117188,"P50":16.98138415813446,"P67":16.989236056804657,"P80":16.995240449905396,"P85":16.997549831867218,"P90":16.99985921382904,"P95":17.002168595790863,"P100":17.004477977752686}},"Memory":{"Gen0Collections":641,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":120},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":218400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":268300},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":571800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":576000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":6200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":5300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":11300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":22000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":26600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":36700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":73200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":149500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":258200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":454400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":915200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2379600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":4374000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":5437800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":10607600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":20885800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":40578600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":72138500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":101615300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":162848100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":325722200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":632369300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":129577500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":118485000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":105056000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":104828100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":105498300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":104474300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":104700300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":106330500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104782300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":105801700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":104633300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":105525200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106271600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":104008700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105313700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":104555000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":107277200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105090200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104111200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":104088200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104807200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":105301600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":105439400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":104738000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":665781800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":679417700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":681514700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":674890900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":675665800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":671391900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":569800700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":570575600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":566301700}],"Metrics":[{"Value":0.019103288650512695,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":120,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiHeader: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiHeader","MethodTitle":"EmptyApiHeader","Parameters":"","FullName":"performance.EmptyModels.EmptyApiHeader","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[43.53444576263428,43.62807869911194,43.35732460021973],"N":3,"Min":43.35732460021973,"LowerFence":43.24281960725784,"Q1":43.445885181427,"Median":43.53444576263428,"Mean":43.50661635398865,"Q3":43.58126223087311,"UpperFence":43.78432780504227,"Max":43.62807869911194,"InterquartileRange":0.13537704944610596,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.07938892136376778,"Variance":0.01890780250590751,"StandardDeviation":0.13750564536013607,"Skewness":-0.19409746962869617,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":43.50661635398865,"StandardError":0.07938892136376778,"Level":12,"Margin":2.508614848787076,"Lower":40.99800150520157,"Upper":46.01523120277572},"Percentiles":{"P0":43.35732460021973,"P25":43.445885181427,"P50":43.53444576263428,"P67":43.56628096103668,"P80":43.590625524520874,"P85":43.59998881816864,"P90":43.609352111816406,"P95":43.61871540546417,"P100":43.62807869911194}},"Memory":{"Gen0Collections":877,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":328},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":211400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":583200},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":486400},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":411400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":15100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":11800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":21200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":27800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":50200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":102700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":213500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":329600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":600600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1249300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2725900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":4195800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":7095200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":10775100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":24985100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":48318200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":57088200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":103348100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":201487300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":418763800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":783733400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":65253500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65027900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":64153100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":54677900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52387600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52915300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53007400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53807500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":54037100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52446900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53364000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53160600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52465700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":52955000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53755100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52527400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":54073100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52816100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53063100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53045600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":52790900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":54564500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53133300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":52766000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52964500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":841190700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":776999800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":775117800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":783432400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":785003300},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":780460800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":730386800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":731957700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":727415200}],"Metrics":[{"Value":0.05227327346801758,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":328,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiInfo: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiInfo","MethodTitle":"EmptyApiInfo","Parameters":"","FullName":"performance.EmptyModels.EmptyApiInfo","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[16.489237546920776,16.49566888809204,16.459330916404724],"N":3,"Min":16.459330916404724,"LowerFence":16.447030752897263,"Q1":16.47428423166275,"Median":16.489237546920776,"Mean":16.481412450472515,"Q3":16.49245321750641,"UpperFence":16.519706696271896,"Max":16.49566888809204,"InterquartileRange":0.018168985843658447,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.011195775206233218,"Variance":0.00037603614740551927,"StandardDeviation":0.019391651487315857,"Skewness":-0.33782016306103435,"Kurtosis":0.6666666666667491,"ConfidenceInterval":{"N":3,"Mean":16.481412450472515,"StandardError":0.011195775206233218,"Level":12,"Margin":0.35377591033573264,"Lower":16.127636540136784,"Upper":16.835188360808246},"Percentiles":{"P0":16.459330916404724,"P25":16.47428423166275,"P50":16.489237546920776,"P67":16.491424202919006,"P80":16.493096351623535,"P85":16.49373948574066,"P90":16.494382619857788,"P95":16.495025753974915,"P100":16.49566888809204}},"Memory":{"Gen0Collections":813,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":152},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":328300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":307800},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":399800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":546000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":4100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":32700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":14600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":52300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":47800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":57300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":81000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":150600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":330000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":536000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1105600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2152500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3699800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":6498900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":10337300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":19449700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":40152500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":75823800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":101445800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":169027300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":336785800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":663171500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":128499200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":121806600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104963300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105210000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":106801400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105260200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105238500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105295400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104094500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":104752300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":104176200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":106044000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":107724300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":106516400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":106189600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105685900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105853500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":107748300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":107861300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":108688400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":105219000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":105271700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":108064000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":107641200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":665644600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":682178900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":675600800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":659476600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":659692400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":658473100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":553287000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":553502800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":552283500}],"Metrics":[{"Value":0.02422928810119629,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":152,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiLicense: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiLicense","MethodTitle":"EmptyApiLicense","Parameters":"","FullName":"performance.EmptyModels.EmptyApiLicense","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[17.72780418395996,17.35749840736389,17.551791667938232],"N":3,"Min":17.35749840736389,"LowerFence":17.17691570520401,"Q1":17.454645037651062,"Median":17.551791667938232,"Mean":17.545698086420696,"Q3":17.639797925949097,"UpperFence":17.91752725839615,"Max":17.72780418395996,"InterquartileRange":0.18515288829803467,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.10694148064383571,"Variance":0.03430944084688766,"StandardDeviation":0.1852280779117671,"Skewness":-0.03286211651378251,"Kurtosis":0.6666666666666674,"ConfidenceInterval":{"N":3,"Mean":17.545698086420696,"StandardError":0.10694148064383571,"Level":12,"Margin":3.3792496696754424,"Lower":14.166448416745254,"Upper":20.924947756096138},"Percentiles":{"P0":17.35749840736389,"P25":17.454645037651062,"P50":17.551791667938232,"P67":17.61163592338562,"P80":17.65739917755127,"P85":17.675000429153442,"P90":17.692601680755615,"P95":17.710202932357788,"P100":17.72780418395996}},"Memory":{"Gen0Collections":641,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":120},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":258700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":285100},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":379800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":375000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":3200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":3000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":15700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":35000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":35600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":45100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":155400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":261500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":300900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":507100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":984600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":1934700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3547000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":6141000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":8437900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":24216800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":38069700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":58848100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":89266000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":173643300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":346840900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":678599100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":130736100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":121848700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104478600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105828000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":103862800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":104698200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":107557600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105795500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":105170000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":103937600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104847800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106160900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":105975400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105386500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":106328800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105166000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104678700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":105128400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":104686800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104513200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":104291500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":104577200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":104204700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":689001900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":737471500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":710057500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":699694200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":687268800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":693788200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":594846400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":582421000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":588940400}],"Metrics":[{"Value":0.019103288650512695,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":120,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiLink: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiLink","MethodTitle":"EmptyApiLink","Parameters":"","FullName":"performance.EmptyModels.EmptyApiLink","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[31.182152032852173,30.987876653671265,31.30839467048645],"N":3,"Min":30.987876653671265,"LowerFence":30.84462583065033,"Q1":31.08501434326172,"Median":31.182152032852173,"Mean":31.159474452336628,"Q3":31.24527335166931,"UpperFence":31.4856618642807,"Max":31.30839467048645,"InterquartileRange":0.16025900840759277,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.09321776345259902,"Variance":0.026068654269314116,"StandardDeviation":0.1614579024678387,"Skewness":-0.13768422202933467,"Kurtosis":0.6666666666666624,"ConfidenceInterval":{"N":3,"Mean":31.159474452336628,"StandardError":0.09321776345259902,"Level":12,"Margin":2.9455931829127544,"Lower":28.213881269423872,"Upper":34.105067635249384},"Percentiles":{"P0":30.987876653671265,"P25":31.08501434326172,"P50":31.182152032852173,"P67":31.225074529647827,"P80":31.25789761543274,"P85":31.270521879196167,"P90":31.283146142959595,"P95":31.295770406723022,"P100":31.30839467048645}},"Memory":{"Gen0Collections":663,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":248},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":245600},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":388300},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":407500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":412600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":3100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":21000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":31600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":28300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":65000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":125800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":145500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":258000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":503600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":873200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1691400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3174200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":5638600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":7560900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":16651900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":35704000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":53719100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":84181700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":153662000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":305588500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":590977300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":64633800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":64896400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":63182600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":54414100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53194800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52855500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52638200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52556100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52706000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52655700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":52402100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":52359300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52599700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":52536400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52543500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52628600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52735200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53256900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52033200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52638800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":52466000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52409000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53427900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":52564500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":53326300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":598494200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":571672200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":579737600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":575714200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":572454800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":577832200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":523149700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":519890300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":525267700}],"Metrics":[{"Value":0.039517879486083984,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":248,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiMediaType: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiMediaType","MethodTitle":"EmptyApiMediaType","Parameters":"","FullName":"performance.EmptyModels.EmptyApiMediaType","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[46.14231586456299,50.13856291770935,49.73829388618469],"N":3,"Min":46.14231586456299,"LowerFence":44.94311958551407,"Q1":47.94030487537384,"Median":49.73829388618469,"Mean":48.673057556152344,"Q3":49.93842840194702,"UpperFence":52.93561369180679,"Max":50.13856291770935,"InterquartileRange":1.9981235265731812,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":1.2706355308218582,"Variance":4.843543956560836,"StandardDeviation":2.2008052972857084,"Skewness":-0.3706263843882093,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":48.673057556152344,"StandardError":1.2706355308218582,"Level":12,"Margin":40.15088132272972,"Lower":8.522176233422627,"Upper":88.82393887888206},"Percentiles":{"P0":46.14231586456299,"P25":47.94030487537384,"P50":49.73829388618469,"P67":49.874385356903076,"P80":49.97845530509949,"P85":50.01848220825195,"P90":50.05850911140442,"P95":50.098536014556885,"P100":50.13856291770935}},"Memory":{"Gen0Collections":791,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":296},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":201500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":550900},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":423700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":1125200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":13600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":10100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":17200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":45300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":65900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":248700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":237000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":346600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":592700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1737300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2367400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":4066000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":6846700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":11894800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":24273500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":46978200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":58475700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":102731200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":202620800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":416950900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":803445700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":65534400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65278200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65332600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":56922300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53298200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53370200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53095900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53411400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53302400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":53297800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53305800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":54452400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53045300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":54387000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53128100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52976300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53473600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":53742100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":53613700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":52890400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53021200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52833000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":871738600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":865833600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":854700600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":827442000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":894487900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":887772500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":774139600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":841185500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":834470100}],"Metrics":[{"Value":0.047147274017333984,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":296,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiOAuthFlow: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiOAuthFlow","MethodTitle":"EmptyApiOAuthFlow","Parameters":"","FullName":"performance.EmptyModels.EmptyApiOAuthFlow","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[32.0783793926239,31.468844413757324,31.433331966400146],"N":3,"Min":31.433331966400146,"LowerFence":30.96730262041092,"Q1":31.451088190078735,"Median":31.468844413757324,"Mean":31.660185257593792,"Q3":31.773611903190613,"UpperFence":32.25739747285843,"Max":32.0783793926239,"InterquartileRange":0.32252371311187744,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.20934822219570826,"Variance":0.13148003440951092,"StandardDeviation":0.36260175731718525,"Skewness":0.38075094813638616,"Kurtosis":0.6666666666666617,"ConfidenceInterval":{"N":3,"Mean":31.660185257593792,"StandardError":0.20934822219570826,"Level":12,"Margin":6.615205871873874,"Lower":25.04497938571992,"Upper":38.275391129467664},"Percentiles":{"P0":31.433331966400146,"P25":31.451088190078735,"P50":31.468844413757324,"P67":31.67608630657196,"P80":31.83456540107727,"P85":31.895518898963928,"P90":31.956472396850586,"P95":32.017425894737244,"P100":32.0783793926239}},"Memory":{"Gen0Collections":577,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":216},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":199200},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":305700},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":418100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":390000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":5100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":12600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":15700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":20500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":37900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":82700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":145500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":277300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":597500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":949000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2091600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3143200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":4940200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":8549300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":16939100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":33592300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":53065500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":77712600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":151441200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":303721000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":585827200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":65645200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":64541200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":64264000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":56788400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":54237600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53463200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53808800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52943300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53265600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53868100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53225900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":52772600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52992200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53358200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53457500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52861600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53192600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52968400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53068400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52372900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":52585800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52834200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53518400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":52665100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":53447800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":594737400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":586331300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":595555100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":591178100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":580951800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":580356000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":538185900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":527959600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":527363800}],"Metrics":[{"Value":0.03439188003540039,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":216,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiOAuthFlows: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiOAuthFlows","MethodTitle":"EmptyApiOAuthFlows","Parameters":"","FullName":"performance.EmptyModels.EmptyApiOAuthFlows","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[16.19872748851776,16.287308931350708,17.07484722137451],"N":3,"Min":16.19872748851776,"LowerFence":15.585928410291672,"Q1":16.243018209934235,"Median":16.287308931350708,"Mean":16.520294547080994,"Q3":16.68107807636261,"UpperFence":17.338167876005173,"Max":17.07484722137451,"InterquartileRange":0.43805986642837524,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.2784529699537316,"Variance":0.2326081694281612,"StandardDeviation":0.4822946914783131,"Skewness":0.3703446036065391,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":16.520294547080994,"StandardError":0.2784529699537316,"Level":12,"Margin":8.798850558934467,"Lower":7.721443988146527,"Upper":25.319145106015462},"Percentiles":{"P0":16.19872748851776,"P25":16.243018209934235,"P50":16.287308931350708,"P67":16.5550719499588,"P80":16.75983190536499,"P85":16.83858573436737,"P90":16.91733956336975,"P95":16.99609339237213,"P100":17.07484722137451}},"Memory":{"Gen0Collections":727,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":136},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":202900},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":299000},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":439900},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":400400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":4100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":9700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":11300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":33600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":31600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":37000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":104600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":153300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":466700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":583800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1091600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2052900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3359700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":6072200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":9122700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":19392500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":38349100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":56654200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":89093300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":161662600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":334968200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":657366500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":126871200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":119725800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104283700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":104266300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":104619400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":104739700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105445700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105747400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104455100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":105032600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":105363000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":104636200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":105234100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":104424600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":104831200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105559400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105842300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":103948200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104385800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104514800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":104563100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104643300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":104516000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":104329600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":104206700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":666197400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":638914100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":652300900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":648102200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":651074500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":677499900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":543539100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":546511400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":572936800}],"Metrics":[{"Value":0.021666288375854492,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":136,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiOperation: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiOperation","MethodTitle":"EmptyApiOperation","Parameters":"","FullName":"performance.EmptyModels.EmptyApiOperation","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[73.72586727142334,74.31503534317017,74.26369190216064],"N":3,"Min":73.72586727142334,"LowerFence":73.55290353298187,"Q1":73.99477958679199,"Median":74.26369190216064,"Mean":74.10153150558472,"Q3":74.2893636226654,"UpperFence":74.73123967647552,"Max":74.31503534317017,"InterquartileRange":0.2945840358734131,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.18841598468523044,"Variance":0.10650174985471494,"StandardDeviation":0.32634605843293857,"Skewness":-0.37420985220149855,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":74.10153150558472,"StandardError":0.18841598468523044,"Level":12,"Margin":5.95376695904985,"Lower":68.14776454653487,"Upper":80.05529846463456},"Percentiles":{"P0":73.72586727142334,"P25":73.99477958679199,"P50":74.26369190216064,"P67":74.28114867210388,"P80":74.29449796676636,"P85":74.29963231086731,"P90":74.30476665496826,"P95":74.30990099906921,"P100":74.31503534317017}},"Memory":{"Gen0Collections":780,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":8388608,"BytesAllocatedPerOperation":584},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":215600},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":1142700},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":618500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":518300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":16900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":20600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":44100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":51600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":105500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":194300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":471900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":645900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":1230500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":3220500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":4643900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":6568200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":12242700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":27264400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":49444600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":57780800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":103062800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":199147000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":402358500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":789857700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":32929000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":33958000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":32416700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":31861000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":31947000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":32328300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":32374700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":32760200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32097200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":31968200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":31884800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":32364000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":32771600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":31853800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":31966200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":31916700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":32364100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32396500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":8388608,"Nanoseconds":32723100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":8388608,"Nanoseconds":29982400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":8388608,"Nanoseconds":27195100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":8388608,"Nanoseconds":26919100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":8388608,"Nanoseconds":26961200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":8388608,"Nanoseconds":26849800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":16,"Operations":8388608,"Nanoseconds":26323700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":17,"Operations":8388608,"Nanoseconds":26339700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":18,"Operations":8388608,"Nanoseconds":26504200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":19,"Operations":8388608,"Nanoseconds":26611900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":26631200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":695895100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":685353900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":709316200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":649375500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":654317800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":653887100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":618457400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":623399700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":622969000}],"Metrics":[{"Value":0.09298324584960938,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":584,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiParameter: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiParameter","MethodTitle":"EmptyApiParameter","Parameters":"","FullName":"performance.EmptyModels.EmptyApiParameter","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[46.199625730514526,43.91939043998718,43.639904260635376],"N":3,"Min":43.639904260635376,"LowerFence":41.85985624790192,"Q1":43.77964735031128,"Median":43.91939043998718,"Mean":44.58630681037903,"Q3":45.059508085250854,"UpperFence":46.97929918766022,"Max":46.199625730514526,"InterquartileRange":1.2798607349395752,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.8106841934774488,"Variance":1.9716265846625447,"StandardDeviation":1.4041462119959391,"Skewness":0.3678159080149808,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":44.58630681037903,"StandardError":0.8106841934774488,"Level":12,"Margin":25.616853970290347,"Lower":18.96945284008868,"Upper":70.20316078066938},"Percentiles":{"P0":43.639904260635376,"P25":43.77964735031128,"P50":43.91939043998718,"P67":44.69467043876648,"P80":45.28753161430359,"P85":45.51555514335632,"P90":45.74357867240906,"P95":45.97160220146179,"P100":46.199625730514526}},"Memory":{"Gen0Collections":920,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":344},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":267800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":470700},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":437000},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":423300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":12500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":24500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":46800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":47800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":77600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":115400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":190300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":298400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":711400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1755600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2560300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":4110200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":6305300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":12423100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":24379000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":47065100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":90718400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":109546900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":205093800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":404504200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":808300300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":66084000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65644100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65552900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":57370000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53093700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54157500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":54009000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53615600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53284900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53639900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53651600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53584800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":55020700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53672200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53081700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53001400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52578700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":52680100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52858800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53460600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":53385300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52769000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":54326300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":52610000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52406400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":795794300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":799386900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":817030500},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":828182800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":789926800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":785237800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":775101100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":736845100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":732156100}],"Metrics":[{"Value":0.054836273193359375,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":344,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiPathItem: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiPathItem","MethodTitle":"EmptyApiPathItem","Parameters":"","FullName":"performance.EmptyModels.EmptyApiPathItem","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[33.06899666786194,32.63801336288452,31.453847885131836],"N":3,"Min":31.453847885131836,"LowerFence":30.834569036960602,"Q1":32.04593062400818,"Median":32.63801336288452,"Mean":32.3869526386261,"Q3":32.85350501537323,"UpperFence":34.06486660242081,"Max":33.06899666786194,"InterquartileRange":0.8075743913650513,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.4828560907204498,"Variance":0.6994500130375059,"StandardDeviation":0.8363312818719062,"Skewness":-0.2731407934428454,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":32.3869526386261,"StandardError":0.4828560907204498,"Level":12,"Margin":15.257795901499975,"Lower":17.129156737126124,"Upper":47.64474854012607},"Percentiles":{"P0":31.453847885131836,"P25":32.04593062400818,"P50":32.63801336288452,"P67":32.78454768657684,"P80":32.89660334587097,"P85":32.93970167636871,"P90":32.982800006866455,"P95":33.0258983373642,"P100":33.06899666786194}},"Memory":{"Gen0Collections":813,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":304},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":280600},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":937500},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":462200},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":409300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":17400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":16300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":18100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":34100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":57600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":79500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":222100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":356500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":739400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1098000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":2020400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3254500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":6032200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":8407500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":18106100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":36753900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":51988300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":77411400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":147167700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":291647500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":577182400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":65786900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65343800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65542600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":58567700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":54052700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53056800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53215100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":54198900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53302100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53238300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":54284000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52985600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53903800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53104900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53308200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53123300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53437100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":54466700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53430200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":54288200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":53960300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":52690300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53842300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52679300},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":624893500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":593075200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":585053100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":608235900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":601005200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":581138200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":554805700},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":547575000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":527708000}],"Metrics":[{"Value":0.04845857620239258,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":304,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiPaths: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiPaths","MethodTitle":"EmptyApiPaths","Parameters":"","FullName":"performance.EmptyModels.EmptyApiPaths","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[33.5357129573822,35.16814708709717,36.11172437667847],"N":3,"Min":33.5357129573822,"LowerFence":32.41992145776749,"Q1":34.351930022239685,"Median":35.16814708709717,"Mean":34.93852814038595,"Q3":35.63993573188782,"UpperFence":37.571944296360016,"Max":36.11172437667847,"InterquartileRange":1.2880057096481323,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.75244099516236,"Variance":1.6985023536027675,"StandardDeviation":1.3032660333188952,"Skewness":-0.17071811614344362,"Kurtosis":0.6666666666666677,"ConfidenceInterval":{"N":3,"Mean":34.93852814038595,"StandardError":0.75244099516236,"Level":12,"Margin":23.776423975472895,"Lower":11.162104164913053,"Upper":58.71495211585884},"Percentiles":{"P0":33.5357129573822,"P25":34.351930022239685,"P50":35.16814708709717,"P67":35.48896336555481,"P80":35.73429346084595,"P85":35.82865118980408,"P90":35.92300891876221,"P95":36.01736664772034,"P100":36.11172437667847}},"Memory":{"Gen0Collections":449,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":168},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":214800},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":300000},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":464900},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":627800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":5400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":20000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":12100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":27800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":39100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":79800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":108800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":209100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":369400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":741500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1932800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3475700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":4668200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":9028700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":14482500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":33121600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":58868200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":101085500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":163907700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":315533400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":627148200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":63844700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65043500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65399700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":54741200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53265400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52847300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52444900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53062600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52451900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":52648300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":52676900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52753400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":53207100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52890800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53081900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53074600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53634000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":54226200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52639200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":52627000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52830900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53097600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":52946900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52651700},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":615152900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":637701200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":619521900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":615526700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":642914400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":658745000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":562635900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":590023600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":605854200}],"Metrics":[{"Value":0.02676248550415039,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":168,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiRequestBody: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiRequestBody","MethodTitle":"EmptyApiRequestBody","Parameters":"","FullName":"performance.EmptyModels.EmptyApiRequestBody","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[33.115458488464355,33.79505276679993,34.9223792552948],"N":3,"Min":33.115458488464355,"LowerFence":32.10006505250931,"Q1":33.45525562763214,"Median":33.79505276679993,"Mean":33.94429683685303,"Q3":34.35871601104736,"UpperFence":35.7139065861702,"Max":34.9223792552948,"InterquartileRange":0.9034603834152222,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.5269237796668798,"Variance":0.8329460087352913,"StandardDeviation":0.9126587580992642,"Skewness":0.1591538305990126,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":33.94429683685303,"StandardError":0.5269237796668798,"Level":12,"Margin":16.650293203940937,"Lower":17.29400363291209,"Upper":50.59459004079396},"Percentiles":{"P0":33.115458488464355,"P25":33.45525562763214,"P50":33.79505276679993,"P67":34.178343772888184,"P80":34.47144865989685,"P85":34.58418130874634,"P90":34.696913957595825,"P95":34.80964660644531,"P100":34.9223792552948}},"Memory":{"Gen0Collections":577,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":216},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":277700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":355800},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":451300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":518400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":34100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":17200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":33200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":49300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":72100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":129000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":171700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":302500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":479700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":949700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1717900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":4358700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":5118600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":9888000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":18430600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":36496500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":69824900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":95063700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":219746400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":439218900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":594724200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":66001400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65944400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":65842800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":55310600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53472800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":53119400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53128900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53496000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":53448300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53538500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":53831800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53536100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":54079900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":52999100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53583700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52813000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53565400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53737700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":54157000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":54541700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":53259300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":53848000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":54308800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53208400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":53513800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":616851100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":645977500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":617254100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":609168900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":620570600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":639484000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":555585200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":566986900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":585900300}],"Metrics":[{"Value":0.03439188003540039,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":216,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiResponse: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiResponse","MethodTitle":"EmptyApiResponse","Parameters":"","FullName":"performance.EmptyModels.EmptyApiResponse","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[58.58311057090759,57.64715075492859,61.10996603965759],"N":3,"Min":57.64715075492859,"LowerFence":55.51801919937134,"Q1":58.11513066291809,"Median":58.58311057090759,"Mean":59.11340912183126,"Q3":59.84653830528259,"UpperFence":62.443649768829346,"Max":61.10996603965759,"InterquartileRange":1.731407642364502,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":1.0341961191946796,"Variance":3.2086848388720077,"StandardDeviation":1.7912802234357437,"Skewness":0.27009842140185814,"Kurtosis":0.6666666666666652,"ConfidenceInterval":{"N":3,"Mean":59.11340912183126,"StandardError":1.0341961191946796,"Level":12,"Margin":32.679619480934235,"Lower":26.433789640897025,"Upper":91.7930286027655},"Percentiles":{"P0":57.64715075492859,"P25":58.11513066291809,"P50":58.58311057090759,"P67":59.44224143028259,"P80":60.09922385215759,"P85":60.35190939903259,"P90":60.60459494590759,"P95":60.85728049278259,"P100":61.10996603965759}},"Memory":{"Gen0Collections":524,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":8388608,"BytesAllocatedPerOperation":392},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":206300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":490000},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":470100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":459900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":14400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":14300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":18100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":33400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":68100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":148100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":322700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":552000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":1012700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":1716900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":3092700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":4835900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":9094200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":16486100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":34032500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":52485700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":73205200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":135976500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":268335500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":533965800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":32579400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":32983500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":33162800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":33765500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":33201100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":33074000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":32723300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":32855000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32449100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":32364500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":32010500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":32024500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":32579000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":32750900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":32194000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":32057100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":31976400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32257200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":8388608,"Nanoseconds":32147800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":8388608,"Nanoseconds":28910700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":8388608,"Nanoseconds":27016500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":8388608,"Nanoseconds":26559100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":8388608,"Nanoseconds":26637900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":8388608,"Nanoseconds":26603300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":16,"Operations":8388608,"Nanoseconds":26311500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":17,"Operations":8388608,"Nanoseconds":26818100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":18,"Operations":8388608,"Nanoseconds":26241400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":19,"Operations":8388608,"Nanoseconds":26891100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":27014400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":605175000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":526971100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":524707900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":521874300},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":514022900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":543071100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":491430750},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":483579350},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":512627550}],"Metrics":[{"Value":0.062465667724609375,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":392,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiResponses: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiResponses","MethodTitle":"EmptyApiResponses","Parameters":"","FullName":"performance.EmptyModels.EmptyApiResponses","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[27.754902839660645,27.44154930114746,27.87734866142273],"N":3,"Min":27.44154930114746,"LowerFence":27.2713765501976,"Q1":27.598226070404053,"Median":27.754902839660645,"Mean":27.691266934076946,"Q3":27.816125750541687,"UpperFence":28.14297527074814,"Max":27.87734866142273,"InterquartileRange":0.21789968013763428,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.1297657080583779,"Variance":0.05051741696367647,"StandardDeviation":0.22476079943726057,"Skewness":-0.2604314703114009,"Kurtosis":0.6666666666666723,"ConfidenceInterval":{"N":3,"Mean":27.691266934076946,"StandardError":0.1297657080583779,"Level":12,"Margin":4.100473674494144,"Lower":23.590793259582803,"Upper":31.79174060857109},"Percentiles":{"P0":27.44154930114746,"P25":27.598226070404053,"P50":27.754902839660645,"P67":27.796534419059753,"P80":27.828370332717896,"P85":27.840614914894104,"P90":27.852859497070312,"P95":27.86510407924652,"P100":27.87734866142273}},"Memory":{"Gen0Collections":449,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":168},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":240500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":386400},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":423500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":455300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":4000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":12900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":12400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":20700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":58400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":61000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":182500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":217600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":350500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":989500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1453400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2795200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":5341300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":7342900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":15568100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":31554200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":54722800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":74289900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":132180300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":270180900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":525351700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":63538900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":64545400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":64867500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":55798200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52080100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52788800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52131800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":52671800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":53302800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":52848500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":52878000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":52601400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":52262500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":52462800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53049400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52232800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53085200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":53027200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":52991100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":52516200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":53407400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":52851200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":518942000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":523307600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":510806400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":518501200},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":513244000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":520555500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":465650000},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":460392800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":467704300}],"Metrics":[{"Value":0.02676248550415039,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":168,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiSchema: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiSchema","MethodTitle":"EmptyApiSchema","Parameters":"","FullName":"performance.EmptyModels.EmptyApiSchema","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[62.3446524143219,69.57935690879822,69.61879134178162],"N":3,"Min":62.3446524143219,"LowerFence":60.50640046596527,"Q1":65.96200466156006,"Median":69.57935690879822,"Mean":67.18093355496724,"Q3":69.59907412528992,"UpperFence":75.0546783208847,"Max":69.61879134178162,"InterquartileRange":3.6370694637298584,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":2.418167365461398,"Variance":17.54260022214756,"StandardDeviation":4.188388738184119,"Skewness":-0.38486179513892016,"Kurtosis":0.666666666666665,"ConfidenceInterval":{"N":3,"Mean":67.18093355496724,"StandardError":2.418167365461398,"Level":12,"Margin":76.41180224697392,"Lower":-9.23086869200668,"Upper":143.59273580194116},"Percentiles":{"P0":62.3446524143219,"P25":65.96200466156006,"P50":69.57935690879822,"P67":69.59276461601257,"P80":69.60301756858826,"P85":69.6069610118866,"P90":69.61090445518494,"P95":69.61484789848328,"P100":69.61879134178162}},"Memory":{"Gen0Collections":930,"Gen1Collections":2,"Gen2Collections":0,"TotalOperations":8388608,"BytesAllocatedPerOperation":696},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":229700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":638100},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":470000},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":482700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":16400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":19200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":42700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":88200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":121800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":301400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":299500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":716600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":1168700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":2332000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":4453600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":7577900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":11884500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":20923400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":44057100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":46547500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":74127300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":143445500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":283408000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":572429300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":32181200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":31904700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":31919500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":31754000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":31709800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":31834200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":32498300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":32732400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32520700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":32021100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":31955000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":31890200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":8388608,"Nanoseconds":32345300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":8388608,"Nanoseconds":32629400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":8388608,"Nanoseconds":31764400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":8388608,"Nanoseconds":32245800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":8388608,"Nanoseconds":32340300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":8388608,"Nanoseconds":32365600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":8388608,"Nanoseconds":31712900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":8388608,"Nanoseconds":30913400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":8388608,"Nanoseconds":26393300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":8388608,"Nanoseconds":26687300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":8388608,"Nanoseconds":26932000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":8388608,"Nanoseconds":26582000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":16,"Operations":8388608,"Nanoseconds":27001700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":17,"Operations":8388608,"Nanoseconds":27265700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":18,"Operations":8388608,"Nanoseconds":26817500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":19,"Operations":8388608,"Nanoseconds":26556900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":26890500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":548885500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":558422200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":562564300},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":554298000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":614987100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":615317900},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":8388608,"Nanoseconds":522984850},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":8388608,"Nanoseconds":583673950},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":8388608,"Nanoseconds":584004750}],"Metrics":[{"Value":0.11086463928222656,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0.0002384185791015625,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":696,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiSecurityRequirement: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiSecurityRequirement","MethodTitle":"EmptyApiSecurityRequirement","Parameters":"","FullName":"performance.EmptyModels.EmptyApiSecurityRequirement","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[9.285540878772736,8.839812874794006,8.476515114307404],"N":3,"Min":8.476515114307404,"LowerFence":8.051394671201706,"Q1":8.658163994550705,"Median":8.839812874794006,"Mean":8.867289622624716,"Q3":9.062676876783371,"UpperFence":9.66944620013237,"Max":9.285540878772736,"InterquartileRange":0.404512882232666,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.23394935395343797,"Variance":0.16419690064569298,"StandardDeviation":0.40521216744526933,"Skewness":0.06749651884035131,"Kurtosis":0.6666666666666664,"ConfidenceInterval":{"N":3,"Mean":8.867289622624716,"StandardError":0.23394935395343797,"Level":12,"Margin":7.392578373782862,"Lower":1.474711248841854,"Upper":16.25986799640758},"Percentiles":{"P0":8.476515114307404,"P25":8.658163994550705,"P50":8.839812874794006,"P67":8.991360396146774,"P80":9.107249677181244,"P85":9.151822477579117,"P90":9.19639527797699,"P95":9.240968078374863,"P100":9.285540878772736}},"Memory":{"Gen0Collections":1112,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":67108864,"BytesAllocatedPerOperation":104},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":231700},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":271600},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":434200},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":546300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":3200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":2800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":9700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":18400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":30200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":37200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":60100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":110600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":209100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":364700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":755200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":1437100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3390200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":3724300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":5050200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":11870100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":20365300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":44133200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":55645700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":97970800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":195471900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":384229000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":23,"Operations":67108864,"Nanoseconds":774471500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":67108864,"Nanoseconds":263987600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":67108864,"Nanoseconds":218885800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":67108864,"Nanoseconds":219551700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":67108864,"Nanoseconds":218440500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":67108864,"Nanoseconds":219728500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":67108864,"Nanoseconds":217201000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":67108864,"Nanoseconds":217123600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":67108864,"Nanoseconds":218882600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":67108864,"Nanoseconds":221695600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":67108864,"Nanoseconds":225674400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":67108864,"Nanoseconds":222723500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":67108864,"Nanoseconds":226416200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":67108864,"Nanoseconds":225210200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":67108864,"Nanoseconds":220092900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":67108864,"Nanoseconds":220195600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":67108864,"Nanoseconds":218397700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":67108864,"Nanoseconds":219956100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":67108864,"Nanoseconds":221334900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":67108864,"Nanoseconds":222023100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":67108864,"Nanoseconds":216634400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":67108864,"Nanoseconds":222552200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":67108864,"Nanoseconds":874621400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":67108864,"Nanoseconds":778335000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":67108864,"Nanoseconds":782952700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":67108864,"Nanoseconds":844477000},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":67108864,"Nanoseconds":814564700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":67108864,"Nanoseconds":790184200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":67108864,"Nanoseconds":623142100},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":67108864,"Nanoseconds":593229800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":67108864,"Nanoseconds":568849300}],"Metrics":[{"Value":0.016570091247558594,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":104,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiSecurityScheme: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiSecurityScheme","MethodTitle":"EmptyApiSecurityScheme","Parameters":"","FullName":"performance.EmptyModels.EmptyApiSecurityScheme","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[17.82311201095581,18.340522050857544,18.609771132469177],"N":3,"Min":17.82311201095581,"LowerFence":17.491822689771652,"Q1":18.081817030906677,"Median":18.340522050857544,"Mean":18.25780173142751,"Q3":18.47514659166336,"UpperFence":19.065140932798386,"Max":18.609771132469177,"InterquartileRange":0.39332956075668335,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.23082470390608867,"Variance":0.15984013180000053,"StandardDeviation":0.39980011480738786,"Skewness":-0.19804675850875939,"Kurtosis":0.6666666666666643,"ConfidenceInterval":{"N":3,"Mean":18.25780173142751,"StandardError":0.23082470390608867,"Level":12,"Margin":7.293842386803939,"Lower":10.963959344623571,"Upper":25.551644118231447},"Percentiles":{"P0":17.82311201095581,"P25":18.081817030906677,"P50":18.340522050857544,"P67":18.4320667386055,"P80":18.502071499824524,"P85":18.528996407985687,"P90":18.55592131614685,"P95":18.582846224308014,"P100":18.609771132469177}},"Memory":{"Gen0Collections":941,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":176},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":242500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":301500},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":392000},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":384500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":7200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":22800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":36000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":31300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":55300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":55900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":118800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":192300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":305300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":666200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1170600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2247900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3545700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":6240500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":9714600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":21763500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":46487300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":54997500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":92092900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":181506700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":355212200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":711919500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":133482100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":125927800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":109070600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106971300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":108686000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":111486500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":108690100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":111793400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":106433700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":109278400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":106807000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":108079100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106871000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":105945100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":106040400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105216300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":106348700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105660600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":106951800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":110694200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":109478100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":108946200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":105867100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":108600100},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":702537400},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":706743500},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":695281600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":704915400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":722276800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":731311300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":598044400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":615405800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":624440300}],"Metrics":[{"Value":0.02804398536682129,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":176,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiServer: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiServer","MethodTitle":"EmptyApiServer","Parameters":"","FullName":"performance.EmptyModels.EmptyApiServer","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[31.003910303115845,31.231260299682617,30.55019974708557],"N":3,"Min":30.55019974708557,"LowerFence":30.266259610652924,"Q1":30.777055025100708,"Median":31.003910303115845,"Mean":30.928456783294678,"Q3":31.11758530139923,"UpperFence":31.628380715847015,"Max":31.231260299682617,"InterquartileRange":0.34053027629852295,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.20019223620976648,"Variance":0.12023079431600081,"StandardDeviation":0.34674312439614546,"Skewness":-0.20730217515565952,"Kurtosis":0.6666666666666667,"ConfidenceInterval":{"N":3,"Mean":30.928456783294678,"StandardError":0.20019223620976648,"Level":12,"Margin":6.32588537217374,"Lower":24.602571411120937,"Upper":37.25434215546842},"Percentiles":{"P0":30.55019974708557,"P25":30.777055025100708,"P50":31.003910303115845,"P67":31.081209301948547,"P80":31.140320301055908,"P85":31.163055300712585,"P90":31.185790300369263,"P95":31.20852530002594,"P100":31.231260299682617}},"Memory":{"Gen0Collections":556,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":16777216,"BytesAllocatedPerOperation":208},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":221300},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":623400},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":431100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":428300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":4200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":9900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":14200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":41700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":53500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":98100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":294800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":575300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":631500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":859500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1739100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3470000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":6141800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":8060500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":17792400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":36318700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":74330300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":79953000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":151218500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":303879800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":593814500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":64792700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":65909900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":66266500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":56971400},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":54653300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54307900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53108100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53098600},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52904200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":53507200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":54941100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":55286700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":54512900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":16777216,"Nanoseconds":54796700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":16777216,"Nanoseconds":53755000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":16777216,"Nanoseconds":54537500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":16777216,"Nanoseconds":53903300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":16777216,"Nanoseconds":53205400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":16777216,"Nanoseconds":52533200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":16777216,"Nanoseconds":52927200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":16777216,"Nanoseconds":54239300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":16777216,"Nanoseconds":53669000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":16777216,"Nanoseconds":53991100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":16777216,"Nanoseconds":54671500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":16777216,"Nanoseconds":54643900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":601870200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":587032900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":583721400},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":574398600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":578212900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":566786600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":16777216,"Nanoseconds":520159300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":16777216,"Nanoseconds":523973600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":16777216,"Nanoseconds":512547300}],"Metrics":[{"Value":0.03314018249511719,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":208,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiServerVariable: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiServerVariable","MethodTitle":"EmptyApiServerVariable","Parameters":"","FullName":"performance.EmptyModels.EmptyApiServerVariable","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[17.455890774726868,17.308247089385986,17.43796169757843],"N":3,"Min":17.308247089385986,"LowerFence":17.262371629476547,"Q1":17.37310439348221,"Median":17.43796169757843,"Mean":17.400699853897095,"Q3":17.44692623615265,"UpperFence":17.55765900015831,"Max":17.455890774726868,"InterquartileRange":0.07382184267044067,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.04651522403528586,"Variance":0.006490998201158504,"StandardDeviation":0.08056673135456412,"Skewness":-0.3635671605776762,"Kurtosis":0.6666666666666666,"ConfidenceInterval":{"N":3,"Mean":17.400699853897095,"StandardError":0.04651522403528586,"Level":12,"Margin":1.4698370969785093,"Lower":15.930862756918586,"Upper":18.870536950875604},"Percentiles":{"P0":17.308247089385986,"P25":17.37310439348221,"P50":17.43796169757843,"P67":17.4440575838089,"P80":17.448719143867493,"P85":17.450512051582336,"P90":17.45230495929718,"P95":17.454097867012024,"P100":17.455890774726868}},"Memory":{"Gen0Collections":684,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":128},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":226900},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":391500},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":680500},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":859600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":6300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":14700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":21800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":35800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":91000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":60100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":102400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":171300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":345600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":564700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1116400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":2170100},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3481900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":5102000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":10766800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":19671400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":38201000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":58405200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":87903700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":172857300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":353811600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":677403800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":129914900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":120222700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":105638800},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105179700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":106677100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105476100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":104460900},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":104997700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":104693700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":106085300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":105466900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":106411500},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":105044600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":106353600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105526900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105778000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":106598700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":105304800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104992600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":105099600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":104765700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":105521300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":105017200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":105966800},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":667304900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":674886600},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":687156800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":691243800},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":686289700},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":690642200},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":585722500},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":580768400},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":585120900}],"Metrics":[{"Value":0.020384788513183594,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":128,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]},{"DisplayInfo":"EmptyModels.EmptyApiTag: ShortRun(IterationCount=3, LaunchCount=1, WarmupCount=3)","Namespace":"performance","Type":"EmptyModels","Method":"EmptyApiTag","MethodTitle":"EmptyApiTag","Parameters":"","FullName":"performance.EmptyModels.EmptyApiTag","HardwareIntrinsics":"AVX-512F+CD+BW+DQ+VL+VBMI,AES,BMI1,BMI2,FMA,LZCNT,PCLMUL,POPCNT VectorSize=256","Statistics":{"OriginalValues":[18.573054671287537,16.853052377700806,16.984477639198303],"N":3,"Min":16.853052377700806,"LowerFence":15.628763288259506,"Q1":16.918765008449554,"Median":16.984477639198303,"Mean":17.470194896062214,"Q3":17.77876615524292,"UpperFence":19.068767875432968,"Max":18.573054671287537,"InterquartileRange":0.8600011467933655,"LowerOutliers":[],"UpperOutliers":[],"AllOutliers":[],"StandardError":0.5527334839074665,"Variance":0.9165429126974564,"StandardDeviation":0.9573624771722863,"Skewness":0.376755927392877,"Kurtosis":0.6666666666666685,"ConfidenceInterval":{"N":3,"Mean":17.470194896062214,"StandardError":0.5527334839074665,"Level":12,"Margin":17.46585545354077,"Lower":0.004339442521445136,"Upper":34.93605034960298},"Percentiles":{"P0":16.853052377700806,"P25":16.918765008449554,"P50":16.984477639198303,"P67":17.524593830108643,"P80":17.937623858451843,"P85":18.096481561660767,"P90":18.25533926486969,"P95":18.414196968078613,"P100":18.573054671287537}},"Memory":{"Gen0Collections":770,"Gen1Collections":0,"Gen2Collections":0,"TotalOperations":33554432,"BytesAllocatedPerOperation":144},"Measurements":[{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":216100},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":1,"Operations":1,"Nanoseconds":282600},{"IterationMode":"Overhead","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":399600},{"IterationMode":"Workload","IterationStage":"Jitting","LaunchIndex":1,"IterationIndex":2,"Operations":16,"Nanoseconds":669900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":1,"Operations":16,"Nanoseconds":6300},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":2,"Operations":32,"Nanoseconds":11000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":3,"Operations":64,"Nanoseconds":18500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":4,"Operations":128,"Nanoseconds":31000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":5,"Operations":256,"Nanoseconds":57900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":6,"Operations":512,"Nanoseconds":62200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":7,"Operations":1024,"Nanoseconds":114600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":8,"Operations":2048,"Nanoseconds":159500},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":9,"Operations":4096,"Nanoseconds":391900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":10,"Operations":8192,"Nanoseconds":618700},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":11,"Operations":16384,"Nanoseconds":1433400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":12,"Operations":32768,"Nanoseconds":3814400},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":13,"Operations":65536,"Nanoseconds":3898000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":14,"Operations":131072,"Nanoseconds":5023000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":15,"Operations":262144,"Nanoseconds":11413600},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":16,"Operations":524288,"Nanoseconds":23003200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":17,"Operations":1048576,"Nanoseconds":38593200},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":18,"Operations":2097152,"Nanoseconds":75992900},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":19,"Operations":4194304,"Nanoseconds":97684000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":20,"Operations":8388608,"Nanoseconds":177072800},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":21,"Operations":16777216,"Nanoseconds":340838000},{"IterationMode":"Workload","IterationStage":"Pilot","LaunchIndex":1,"IterationIndex":22,"Operations":33554432,"Nanoseconds":661666000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":129833000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":123026700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":104666500},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106773100},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":107276300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105008700},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":106023000},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":106161300},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":106777200},{"IterationMode":"Overhead","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":104981000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":106102200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":105432300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":106194600},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":4,"Operations":33554432,"Nanoseconds":106724200},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":5,"Operations":33554432,"Nanoseconds":105594300},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":6,"Operations":33554432,"Nanoseconds":105551100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":7,"Operations":33554432,"Nanoseconds":105182700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":8,"Operations":33554432,"Nanoseconds":105193900},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":9,"Operations":33554432,"Nanoseconds":106335800},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":10,"Operations":33554432,"Nanoseconds":106154400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":11,"Operations":33554432,"Nanoseconds":105548000},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":12,"Operations":33554432,"Nanoseconds":106135100},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":13,"Operations":33554432,"Nanoseconds":107567700},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":14,"Operations":33554432,"Nanoseconds":105591400},{"IterationMode":"Overhead","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":15,"Operations":33554432,"Nanoseconds":105316900},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":662245200},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":656693000},{"IterationMode":"Workload","IterationStage":"Warmup","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":681163100},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":728802600},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":671088900},{"IterationMode":"Workload","IterationStage":"Actual","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":675498800},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":1,"Operations":33554432,"Nanoseconds":623208300},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":2,"Operations":33554432,"Nanoseconds":565494600},{"IterationMode":"Workload","IterationStage":"Result","LaunchIndex":1,"IterationIndex":3,"Operations":33554432,"Nanoseconds":569904500}],"Metrics":[{"Value":0.02294778823852539,"Descriptor":{"Id":"Gen0Collects","DisplayName":"Gen0","Legend":"GC Generation 0 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":0}},{"Value":0,"Descriptor":{"Id":"Gen1Collects","DisplayName":"Gen1","Legend":"GC Generation 1 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":1}},{"Value":0,"Descriptor":{"Id":"Gen2Collects","DisplayName":"Gen2","Legend":"GC Generation 2 collects per 1000 operations","NumberFormat":"#0.0000","UnitType":0,"Unit":"Count","TheGreaterTheBetter":false,"PriorityInCategory":2}},{"Value":144,"Descriptor":{"Id":"Allocated Memory","DisplayName":"Allocated","Legend":"Allocated memory per single operation (managed only, inclusive, 1KB = 1024B)","NumberFormat":"0.##","UnitType":2,"Unit":"B","TheGreaterTheBetter":false,"PriorityInCategory":3}}]}]} diff --git a/performance/benchmark/Descriptions.cs b/performance/benchmark/Descriptions.cs new file mode 100644 index 000000000..688fb3b1d --- /dev/null +++ b/performance/benchmark/Descriptions.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net.Http; +using System.Reflection; +using System.Threading.Tasks; +using BenchmarkDotNet.Attributes; +using Microsoft.OpenApi; +using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Readers; + +namespace performance; + +[MemoryDiagnoser] +[JsonExporter] +[ShortRunJob] +public class Descriptions +{ + [Benchmark] + public async Task PetStoreYaml() + { + return await ParseDocumentAsync(PetStoreYamlPath); + } + [Benchmark] + public async Task PetStoreJson() + { + return await ParseDocumentAsync(PetStoreJsonPath); + } + [Benchmark] + public async Task GHESYaml() + { + return await ParseDocumentAsync(GHESYamlDescriptionUrl); + } + [Benchmark] + public async Task GHESJson() + { + return await ParseDocumentAsync(GHESJsonDescriptionUrl); + } + private readonly Dictionary _streams = new(StringComparer.OrdinalIgnoreCase); + [GlobalSetup] + public async Task GetAllDescriptions() + { + _httpClient = new HttpClient(); + readerSettings = new OpenApiReaderSettings + { + LeaveStreamOpen = true, + }; + await LoadDocumentFromAssemblyIntoStreams(PetStoreYamlPath); + await LoadDocumentFromAssemblyIntoStreams(PetStoreJsonPath); + await LoadDocumentFromUrlIntoStreams(GHESYamlDescriptionUrl); + await LoadDocumentFromUrlIntoStreams(GHESJsonDescriptionUrl); + } + private OpenApiReaderSettings readerSettings; + private const string PetStoreYamlPath = @"petStore.yaml"; + private const string PetStoreJsonPath = @"petStore.json"; + private const string GHESYamlDescriptionUrl = @"https://raw.githubusercontent.com/github/rest-api-description/aef5e31a2d10fdaab311ec6d18a453021a81383d/descriptions/ghes-3.16/ghes-3.16.2022-11-28.yaml"; + private const string GHESJsonDescriptionUrl = @"https://raw.githubusercontent.com/github/rest-api-description/aef5e31a2d10fdaab311ec6d18a453021a81383d/descriptions/ghes-3.16/ghes-3.16.2022-11-28.json"; + private async Task ParseDocumentAsync(string fileName) + { + var stream = _streams[fileName]; + stream.Seek(0, SeekOrigin.Begin); + var reader = new OpenApiStreamReader(readerSettings); + + var result = await reader.ReadAsync(stream).ConfigureAwait(false); + return result.OpenApiDocument; + } + private HttpClient _httpClient; + private async Task LoadDocumentFromUrlIntoStreams(string url) + { + var response = await _httpClient.GetAsync(url).ConfigureAwait(false); + response.EnsureSuccessStatusCode(); + var stream = new MemoryStream(); // NOT disposed on purpose + await response.Content.CopyToAsync(stream).ConfigureAwait(false); + stream.Seek(0, SeekOrigin.Begin); + _streams.Add(url, stream); + } + private static readonly Assembly assembly = typeof(Descriptions).GetTypeInfo().Assembly; + private async Task LoadDocumentFromAssemblyIntoStreams(string fileName) + { + using var resource = assembly.GetManifestResourceStream($"PerformanceTests.{fileName}"); + var stream = new MemoryStream(); // NOT disposed on purpose + await resource.CopyToAsync(stream).ConfigureAwait(false); + stream.Seek(0, SeekOrigin.Begin); + _streams.Add(fileName, stream); + } + [GlobalCleanup] + public void Cleanup() + { + foreach (var stream in _streams.Values) + { + stream.Dispose(); + } + _streams.Clear(); + _httpClient.Dispose(); + } +} diff --git a/performance/benchmark/EmptyModels.cs b/performance/benchmark/EmptyModels.cs new file mode 100644 index 000000000..1e45ca7c8 --- /dev/null +++ b/performance/benchmark/EmptyModels.cs @@ -0,0 +1,153 @@ +using System; +using BenchmarkDotNet; +using BenchmarkDotNet.Attributes; +using Microsoft.OpenApi.Models; + +namespace performance; +[MemoryDiagnoser] +[JsonExporter] +[ShortRunJob] +// [SimpleJob(launchCount: 1, warmupCount: 30, iterationCount: 50, invocationCount:1000)] +public class EmptyModels +{ + [Benchmark] + public OpenApiCallback EmptyApiCallback() + { + return new OpenApiCallback(); + } + [Benchmark] + public OpenApiComponents EmptyApiComponents() + { + return new OpenApiComponents(); + } + [Benchmark] + public OpenApiContact EmptyApiContact() + { + return new OpenApiContact(); + } + [Benchmark] + public OpenApiDiscriminator EmptyApiDiscriminator() + { + return new OpenApiDiscriminator(); + } + [Benchmark] + public OpenApiDocument EmptyDocument() + { + return new OpenApiDocument(); + } + [Benchmark] + public OpenApiEncoding EmptyApiEncoding() + { + return new OpenApiEncoding(); + } + [Benchmark] + public OpenApiExample EmptyApiExample() + { + return new OpenApiExample(); + } + [Benchmark] + public OpenApiExternalDocs EmptyApiExternalDocs() + { + return new OpenApiExternalDocs(); + } + [Benchmark] + public OpenApiHeader EmptyApiHeader() + { + return new OpenApiHeader(); + } + [Benchmark] + public OpenApiInfo EmptyApiInfo() + { + return new OpenApiInfo(); + } + [Benchmark] + public OpenApiLicense EmptyApiLicense() + { + return new OpenApiLicense(); + } + [Benchmark] + public OpenApiLink EmptyApiLink() + { + return new OpenApiLink(); + } + [Benchmark] + public OpenApiMediaType EmptyApiMediaType() + { + return new OpenApiMediaType(); + } + [Benchmark] + public OpenApiOAuthFlow EmptyApiOAuthFlow() + { + return new OpenApiOAuthFlow(); + } + [Benchmark] + public OpenApiOAuthFlows EmptyApiOAuthFlows() + { + return new OpenApiOAuthFlows(); + } + [Benchmark] + public OpenApiOperation EmptyApiOperation() + { + return new OpenApiOperation(); + } + [Benchmark] + public OpenApiParameter EmptyApiParameter() + { + return new OpenApiParameter(); + } + [Benchmark] + public OpenApiPathItem EmptyApiPathItem() + { + return new OpenApiPathItem(); + } + [Benchmark] + public OpenApiPaths EmptyApiPaths() + { + return new OpenApiPaths(); + } + [Benchmark] + public OpenApiRequestBody EmptyApiRequestBody() + { + return new OpenApiRequestBody(); + } + [Benchmark] + public OpenApiResponse EmptyApiResponse() + { + return new OpenApiResponse(); + } + [Benchmark] + public OpenApiResponses EmptyApiResponses() + { + return new OpenApiResponses(); + } + [Benchmark] + public OpenApiSchema EmptyApiSchema() + { + return new OpenApiSchema(); + } + [Benchmark] + public OpenApiSecurityRequirement EmptyApiSecurityRequirement() + { + return new OpenApiSecurityRequirement(); + } + [Benchmark] + public OpenApiSecurityScheme EmptyApiSecurityScheme() + { + return new OpenApiSecurityScheme(); + } + [Benchmark] + public OpenApiServer EmptyApiServer() + { + return new OpenApiServer(); + } + [Benchmark] + public OpenApiServerVariable EmptyApiServerVariable() + { + return new OpenApiServerVariable(); + } + [Benchmark] + public OpenApiTag EmptyApiTag() + { + return new OpenApiTag(); + } +} diff --git a/performance/benchmark/PerformanceTests.csproj b/performance/benchmark/PerformanceTests.csproj new file mode 100644 index 000000000..4e7b37697 --- /dev/null +++ b/performance/benchmark/PerformanceTests.csproj @@ -0,0 +1,28 @@ + + + net8.0 + Exe + + + AnyCPU + pdbonly + true + true + true + Release + false + CA1822 + + + + + + + + + + + + + + \ No newline at end of file diff --git a/performance/benchmark/Program.cs b/performance/benchmark/Program.cs new file mode 100644 index 000000000..a745a2e6a --- /dev/null +++ b/performance/benchmark/Program.cs @@ -0,0 +1,13 @@ +using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Running; + +namespace performance; +public class Program +{ + public static void Main(string[] args) + { + var config = DefaultConfig.Instance; + BenchmarkRunner.Run(config, args); + BenchmarkRunner.Run(config, args); + } +} diff --git a/performance/resultsComparer/Logger.cs b/performance/resultsComparer/Logger.cs new file mode 100644 index 000000000..974389517 --- /dev/null +++ b/performance/resultsComparer/Logger.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using Microsoft.Extensions.Logging; + +namespace resultsComparer; +public static class Logger +{ + public static ILoggerFactory ConfigureLogger(LogLevel logLevel) + { + // Configure logger options +#if DEBUG + logLevel = logLevel > LogLevel.Debug ? LogLevel.Debug : logLevel; +#endif + + return LoggerFactory.Create((builder) => + { + builder + .AddSimpleConsole(c => c.IncludeScopes = true) +#if DEBUG + .AddDebug() +#endif + .SetMinimumLevel(logLevel); + }); + } +} diff --git a/performance/resultsComparer/Program.cs b/performance/resultsComparer/Program.cs new file mode 100644 index 000000000..1c6fb7bc2 --- /dev/null +++ b/performance/resultsComparer/Program.cs @@ -0,0 +1,47 @@ +// See https://aka.ms/new-console-template for more information +using System.CommandLine; +using Microsoft.Extensions.Logging; +using resultsComparer.Handlers; +using resultsComparer.Policies; + +namespace resultsComparer; + +public class Program +{ + public static async Task Main(string[] args) + { + var rootCommand = CreateRootCommand(); + return await rootCommand.InvokeAsync(args); + } + internal static RootCommand CreateRootCommand() + { + var rootCommand = new RootCommand { }; + + var compareCommand = new Command("compare") + { + Description = "Compare the benchmark results." + }; + var oldResultsPathArgument = new Argument("existingReportPath", () => ExistingReportPath, "The path to the existing benchmark report."); + compareCommand.AddArgument(oldResultsPathArgument); + var newResultsPathArgument = new Argument("newReportPath", () => ExistingReportPath, "The path to the new benchmark report."); + compareCommand.AddArgument(newResultsPathArgument); + var logLevelOption = new Option(["--log-level", "-l"], () => LogLevel.Warning, "The log level to use."); + compareCommand.AddOption(logLevelOption); + var allPolicyNames = IBenchmarkComparisonPolicy.GetAllPolicies().Select(static p => p.Name).Order(StringComparer.OrdinalIgnoreCase).ToArray(); + var policiesOption = new Option(["--policies", "-p"], () => ["all"], $"The policies to use for comparison: {string.Join(',', allPolicyNames)}.") + { + Arity = ArgumentArity.ZeroOrMore + }; + compareCommand.AddOption(policiesOption); + compareCommand.Handler = new CompareCommandHandler + { + OldResultsPath = oldResultsPathArgument, + NewResultsPath = newResultsPathArgument, + LogLevel = logLevelOption, + Policies = policiesOption, + }; + rootCommand.Add(compareCommand); + return rootCommand; + } + private const string ExistingReportPath = "../benchmark/BenchmarkDotNet.Artifacts/results/performance.EmptyModels-report.json"; +} diff --git a/performance/resultsComparer/handlers/AsyncCommandHandler.cs b/performance/resultsComparer/handlers/AsyncCommandHandler.cs new file mode 100644 index 000000000..f4c65b566 --- /dev/null +++ b/performance/resultsComparer/handlers/AsyncCommandHandler.cs @@ -0,0 +1,14 @@ +using System; +using System.CommandLine.Invocation; +using System.Threading.Tasks; + +namespace resultsComparer.Handlers; + +internal abstract class AsyncCommandHandler : ICommandHandler +{ + public int Invoke(InvocationContext context) + { + throw new InvalidOperationException("This method should not be called"); + } + public abstract Task InvokeAsync(InvocationContext context); +} diff --git a/performance/resultsComparer/handlers/CompareCommandHandler.cs b/performance/resultsComparer/handlers/CompareCommandHandler.cs new file mode 100644 index 000000000..ed079953e --- /dev/null +++ b/performance/resultsComparer/handlers/CompareCommandHandler.cs @@ -0,0 +1,96 @@ +using System; +using System.CommandLine; +using System.CommandLine.Invocation; +using System.Text.Json; +using System.Text.Json.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using resultsComparer.Models; +using resultsComparer.Policies; + +namespace resultsComparer.Handlers; + +internal class CompareCommandHandler : AsyncCommandHandler +{ + public required Argument OldResultsPath { get; set; } + public required Argument NewResultsPath { get; set; } + public required Option LogLevel { get; set; } + public required Option Policies { get; set; } + + public override Task InvokeAsync(InvocationContext context) + { + var cancellationToken = context.BindingContext.GetRequiredService(); + var oldResultsPath = context.ParseResult.GetValueForArgument(OldResultsPath); + var newResultsPath = context.ParseResult.GetValueForArgument(NewResultsPath); + var policyNames = context.ParseResult.GetValueForOption(Policies) ?? []; + var policies = IBenchmarkComparisonPolicy.GetSelectedPolicies(policyNames).ToArray(); + var logLevel = context.ParseResult.GetValueForOption(LogLevel); + using var loggerFactory = Logger.ConfigureLogger(logLevel); + var logger = loggerFactory.CreateLogger(); + return CompareResultsAsync(oldResultsPath, newResultsPath, logger, policies, cancellationToken); + } + private static async Task CompareResultsAsync(string existingReportPath, string newReportPath, ILogger logger, IBenchmarkComparisonPolicy[] comparisonPolicies, CancellationToken cancellationToken = default) + { + + var existingBenchmark = await GetBenchmarksAllocatedBytes(existingReportPath, cancellationToken); + if (existingBenchmark is null) + { + logger.LogError("No existing benchmark data found."); + return 1; + } + var newBenchmark = await GetBenchmarksAllocatedBytes(newReportPath, cancellationToken); + if (newBenchmark is null) + { + logger.LogError("No new benchmark data found."); + return 1; + } + var hasErrors = false; + foreach (var existingBenchmarkResult in existingBenchmark) + { + if (!newBenchmark.TryGetValue(existingBenchmarkResult.Key, out var newBenchmarkResult)) + { + logger.LogError("No new benchmark result found for {ExistingBenchmarkResultKey}.", existingBenchmarkResult.Key); + hasErrors = true; + } + foreach (var comparisonPolicy in comparisonPolicies) + { + if (!comparisonPolicy.Equals(existingBenchmarkResult.Value, newBenchmarkResult)) + { + logger.LogError("Benchmark result for {ExistingBenchmarkResultKey} does not match the existing benchmark result. {ErrorMessage}", existingBenchmarkResult.Key, comparisonPolicy.GetErrorMessage(existingBenchmarkResult.Value, newBenchmarkResult)); + hasErrors = true; + } + } + } + + if (newBenchmark.Keys.Where(x => !existingBenchmark.ContainsKey(x)).ToArray() is { Length: > 0 } missingKeys) + { + logger.LogError("New benchmark results found that do not exist in the existing benchmark results."); + foreach (var missingKey in missingKeys) + { + logger.LogError("New benchmark result found: {MissingKey}.", missingKey); + } + hasErrors = true; + } + logger.LogInformation("Benchmark comparison complete. {Status}", hasErrors ? "Errors found" : "No errors found"); + return hasErrors ? 1 : 0; + } + + private static async Task?> GetBenchmarksAllocatedBytes(string targetPath, CancellationToken cancellationToken = default) + { + if (!File.Exists(targetPath)) + { + return null; + } + using var stream = new FileStream(targetPath, FileMode.Open, FileAccess.Read); + var report = (await JsonSerializer.DeserializeAsync(stream, BenchmarkSourceGenerationContext.Default.BenchmarkReport, cancellationToken: cancellationToken)) + ?? throw new InvalidOperationException($"Failed to deserialize {targetPath}."); + return report.Benchmarks + .Where(x => x.Memory is not null && x.Method is not null) + .ToDictionary(x => x.Method!, x => x.Memory!, StringComparer.OrdinalIgnoreCase); + } +} + +[JsonSerializable(typeof(BenchmarkReport))] +internal partial class BenchmarkSourceGenerationContext : JsonSerializerContext +{ +} diff --git a/performance/resultsComparer/models/BenchmarkReport.cs b/performance/resultsComparer/models/BenchmarkReport.cs new file mode 100644 index 000000000..c660619b6 --- /dev/null +++ b/performance/resultsComparer/models/BenchmarkReport.cs @@ -0,0 +1,21 @@ +using System.Text.Json.Serialization; + +namespace resultsComparer.Models; +internal sealed record BenchmarkReport +{ + [JsonPropertyName("Benchmarks")] + public Benchmark[] Benchmarks { get; init; } = []; +} +internal sealed record Benchmark +{ + [JsonPropertyName("Method")] + public string Method { get; init; } = string.Empty; + + [JsonPropertyName("Memory")] + public BenchmarkMemory Memory { get; init; } = new BenchmarkMemory(); +} +internal sealed record BenchmarkMemory +{ + [JsonPropertyName("BytesAllocatedPerOperation")] + public long AllocatedBytes { get; init; } +} diff --git a/performance/resultsComparer/policies/BaseBenchmarkComparisonPolicy.cs b/performance/resultsComparer/policies/BaseBenchmarkComparisonPolicy.cs new file mode 100644 index 000000000..86454b5c3 --- /dev/null +++ b/performance/resultsComparer/policies/BaseBenchmarkComparisonPolicy.cs @@ -0,0 +1,17 @@ +using resultsComparer.Models; + +namespace resultsComparer.Policies; + +internal abstract class BaseBenchmarkComparisonPolicy : IBenchmarkComparisonPolicy +{ + protected abstract string TypeName { get; } + public string Name => TypeName[..^6]; // Remove "Policy" suffix + + public abstract bool Equals(BenchmarkMemory? x, BenchmarkMemory? y); + public abstract string GetErrorMessage(BenchmarkMemory? x, BenchmarkMemory? y); + + public int GetHashCode(BenchmarkMemory obj) + { + throw new InvalidOperationException("This method should not be called. Use Equals instead."); + } +} diff --git a/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs b/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs new file mode 100644 index 000000000..ee1b2a336 --- /dev/null +++ b/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs @@ -0,0 +1,39 @@ +using resultsComparer.Models; + +namespace resultsComparer.Policies; + +internal interface IBenchmarkComparisonPolicy : IEqualityComparer +{ + string GetErrorMessage(BenchmarkMemory? x, BenchmarkMemory? y); + string Name { get;} + public static IEnumerable GetSelectedPolicies(string[] names) + { + if (names is []) + { + yield break; + } + var allPolicies = GetAllPolicies(); + if (names is ["all"]) + { + foreach (var policy in allPolicies) + { + yield return policy; + } + } + var indexedNames = names.ToHashSet(StringComparer.OrdinalIgnoreCase); + foreach (var policy in allPolicies.Where(x => indexedNames.Contains(x.Name))) + { + yield return policy; + } + } + public static IBenchmarkComparisonPolicy[] GetAllPolicies() + { + return [ + IdenticalMemoryUsagePolicy.Instance, + ZeroPointOnePercentDifferenceMemoryUsagePolicy.Instance, + OnePercentDifferenceMemoryUsagePolicy.Instance, + TwoPercentDifferenceMemoryUsagePolicy.Instance, + FivePercentDifferenceMemoryUsagePolicy.Instance, + ]; + } +} diff --git a/performance/resultsComparer/policies/IdenticalMemoryUsagePolicy.cs b/performance/resultsComparer/policies/IdenticalMemoryUsagePolicy.cs new file mode 100644 index 000000000..fd5ab1fe4 --- /dev/null +++ b/performance/resultsComparer/policies/IdenticalMemoryUsagePolicy.cs @@ -0,0 +1,17 @@ +using resultsComparer.Models; + +namespace resultsComparer.Policies; +internal sealed class IdenticalMemoryUsagePolicy : BaseBenchmarkComparisonPolicy +{ + public static IdenticalMemoryUsagePolicy Instance { get; } = new IdenticalMemoryUsagePolicy(); + protected override string TypeName => nameof(IdenticalMemoryUsagePolicy); + public override bool Equals(BenchmarkMemory? x, BenchmarkMemory? y) + { + return x?.AllocatedBytes == y?.AllocatedBytes; + } + + public override string GetErrorMessage(BenchmarkMemory? x, BenchmarkMemory? y) + { + return $"Allocated bytes differ: {x?.AllocatedBytes} != {y?.AllocatedBytes}"; + } +} diff --git a/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs b/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs new file mode 100644 index 000000000..4e308aac4 --- /dev/null +++ b/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs @@ -0,0 +1,66 @@ +using resultsComparer.Models; + +namespace resultsComparer.Policies; + +internal sealed class ZeroPointOnePercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy +{ + public static ZeroPointOnePercentDifferenceMemoryUsagePolicy Instance { get; } = new ZeroPointOnePercentDifferenceMemoryUsagePolicy(); + protected override string TypeName => nameof(ZeroPointOnePercentDifferenceMemoryUsagePolicy); + public ZeroPointOnePercentDifferenceMemoryUsagePolicy():base(0.1f) {} +} + +internal sealed class OnePercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy +{ + public static OnePercentDifferenceMemoryUsagePolicy Instance { get; } = new OnePercentDifferenceMemoryUsagePolicy(); + protected override string TypeName => nameof(OnePercentDifferenceMemoryUsagePolicy); + public OnePercentDifferenceMemoryUsagePolicy():base(1) {} +} + +internal sealed class TwoPercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy +{ + public static TwoPercentDifferenceMemoryUsagePolicy Instance { get; } = new TwoPercentDifferenceMemoryUsagePolicy(); + protected override string TypeName => nameof(TwoPercentDifferenceMemoryUsagePolicy); + public TwoPercentDifferenceMemoryUsagePolicy():base(2) {} +} + +internal sealed class FivePercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy +{ + public static FivePercentDifferenceMemoryUsagePolicy Instance { get; } = new FivePercentDifferenceMemoryUsagePolicy(); + protected override string TypeName => nameof(FivePercentDifferenceMemoryUsagePolicy); + public FivePercentDifferenceMemoryUsagePolicy():base(1) {} +} + +internal abstract class PercentageMemoryUsagePolicy(float tolerancePercentagePoints) : BaseBenchmarkComparisonPolicy +{ + private float TolerancePercentagePoints { get; } = Math.Abs(tolerancePercentagePoints); + public override bool Equals(BenchmarkMemory? x, BenchmarkMemory? y) + { + if (x is null && y is null) + { + return true; + } + if (x is null || y is null) + { + return false; + } + var forwardRatio = GetPercentageDifference(x, y); + var backwardRatio = GetPercentageDifference(y, x); + return forwardRatio <= TolerancePercentagePoints && backwardRatio <= TolerancePercentagePoints; + } + private static double GetPercentageDifference(BenchmarkMemory x, BenchmarkMemory y) + { + return Math.Truncate(Math.Abs(GetAbsoluteRatio(x, y)) * 10000) / 100; + } + private static double GetAbsoluteRatio(BenchmarkMemory x, BenchmarkMemory y) + { + return Math.Abs(((double)(x.AllocatedBytes - y.AllocatedBytes))/x.AllocatedBytes); + } + public override string GetErrorMessage(BenchmarkMemory? x, BenchmarkMemory? y) + { + if (x is null || y is null) + { + return "One of the benchmarks is null."; + } + return $"Allocated bytes differ: {x.AllocatedBytes} != {y.AllocatedBytes}, Ratio: {GetAbsoluteRatio(x, y)}, Allowed: {TolerancePercentagePoints}%"; + } +} diff --git a/performance/resultsComparer/resultsComparer.csproj b/performance/resultsComparer/resultsComparer.csproj new file mode 100644 index 000000000..ac261848a --- /dev/null +++ b/performance/resultsComparer/resultsComparer.csproj @@ -0,0 +1,19 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + + diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/petStore.json b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/petStore.json new file mode 100644 index 000000000..f316027dc --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiDocument/petStore.json @@ -0,0 +1,298 @@ +{ + "openapi": "3.0.0", + "info": { + "version": "1.0.0", + "title": "Swagger Petstore (Simple)", + "description": "A sample API that uses a petstore as an example to demonstrate features in the swagger-2.0 specification", + "termsOfService": "http://helloreverb.com/terms/", + "contact": { + "name": "Swagger API team", + "email": "foo@example.com", + "url": "http://swagger.io/" + }, + "license": { + "name": "MIT", + "url": "http://opensource.org/licenses/MIT" + } + }, + "servers": [ + { + "url": "http://petstore.swagger.io/api" + } + ], + "paths": { + "/pets": { + "get": { + "description": "Returns all pets from the system that the user has access to", + "operationId": "findPets", + "parameters": [ + { + "name": "tags", + "in": "query", + "description": "tags to filter by", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "limit", + "in": "query", + "description": "maximum number of results to return", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/pet1" + } + } + }, + "application/xml": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/pet1" + } + } + } + } + }, + "4XX": { + "description": "unexpected client error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + }, + "5XX": { + "description": "unexpected server error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + } + } + }, + "post": { + "description": "Creates a new pet in the store. Duplicates are allowed", + "operationId": "addPet", + "requestBody": { + "description": "Pet to add to the store", + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/newPet" + } + } + } + }, + "responses": { + "200": { + "description": "pet response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pet1" + } + } + } + }, + "4XX": { + "description": "unexpected client error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + }, + "5XX": { + "description": "unexpected server error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + } + } + } + }, + "/pets/{id}": { + "get": { + "description": "Returns a user based on a single ID, if the user does not have access to the pet", + "operationId": "findPetById", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to fetch", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "pet response", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/pet1" + } + }, + "application/xml": { + "schema": { + "$ref": "#/components/schemas/pet1" + } + } + } + }, + "4XX": { + "description": "unexpected client error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + }, + "5XX": { + "description": "unexpected server error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + } + } + }, + "delete": { + "description": "deletes a single pet based on the ID supplied", + "operationId": "deletePet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "ID of pet to delete", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "204": { + "description": "pet deleted" + }, + "4XX": { + "description": "unexpected client error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + }, + "5XX": { + "description": "unexpected server error", + "content": { + "text/html": { + "schema": { + "$ref": "#/components/schemas/errorModel" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "pet1": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "newPet": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "tag": { + "type": "string" + } + } + }, + "errorModel": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file From 1efe44adeb52d9249724a4a1b030b990d6345db7 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 10 Apr 2025 14:55:07 -0400 Subject: [PATCH 37/52] ci: adds a point 2 policy to reduce noise Signed-off-by: Vincent Biret --- .github/workflows/ci-cd.yml | 2 +- .../resultsComparer/policies/IBenchmarkComparisonPolicy.cs | 1 + .../policies/PercentageMemoryUsagePolicy.cs | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml index c79c9bbf6..595d473c8 100644 --- a/.github/workflows/ci-cd.yml +++ b/.github/workflows/ci-cd.yml @@ -83,7 +83,7 @@ jobs: 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 + run: dotnet run -c Release --project ./performance/resultsComparer/resultsComparer.csproj -- compare $OLD_REPORT $NEW_REPORT -p ZeroPointTwoPercentDifferenceMemoryUsage shell: bash env: NEW_REPORT: "${{ github.workspace }}/performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json" diff --git a/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs b/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs index ee1b2a336..6e3f518a1 100644 --- a/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs +++ b/performance/resultsComparer/policies/IBenchmarkComparisonPolicy.cs @@ -31,6 +31,7 @@ public static IBenchmarkComparisonPolicy[] GetAllPolicies() return [ IdenticalMemoryUsagePolicy.Instance, ZeroPointOnePercentDifferenceMemoryUsagePolicy.Instance, + ZeroPointTwoPercentDifferenceMemoryUsagePolicy.Instance, OnePercentDifferenceMemoryUsagePolicy.Instance, TwoPercentDifferenceMemoryUsagePolicy.Instance, FivePercentDifferenceMemoryUsagePolicy.Instance, diff --git a/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs b/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs index 4e308aac4..928bfa268 100644 --- a/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs +++ b/performance/resultsComparer/policies/PercentageMemoryUsagePolicy.cs @@ -9,6 +9,13 @@ internal sealed class ZeroPointOnePercentDifferenceMemoryUsagePolicy : Percentag public ZeroPointOnePercentDifferenceMemoryUsagePolicy():base(0.1f) {} } +internal sealed class ZeroPointTwoPercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy +{ + public static ZeroPointTwoPercentDifferenceMemoryUsagePolicy Instance { get; } = new ZeroPointTwoPercentDifferenceMemoryUsagePolicy(); + protected override string TypeName => nameof(ZeroPointTwoPercentDifferenceMemoryUsagePolicy); + public ZeroPointTwoPercentDifferenceMemoryUsagePolicy():base(0.2f) {} +} + internal sealed class OnePercentDifferenceMemoryUsagePolicy : PercentageMemoryUsagePolicy { public static OnePercentDifferenceMemoryUsagePolicy Instance { get; } = new OnePercentDifferenceMemoryUsagePolicy(); From abda0188474370bd39df38d33122b24f5189f23d Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 15 Aug 2025 10:31:00 -0400 Subject: [PATCH 38/52] ci: fixes flaky test Signed-off-by: Vincent Biret --- .../Services/OpenApiServiceTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs index 575ccdc1e..9a1bd1327 100644 --- a/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs +++ b/test/Microsoft.OpenApi.Hidi.Tests/Services/OpenApiServiceTests.cs @@ -224,7 +224,7 @@ public Task ThrowIfOpenApiUrlIsNotProvidedWhenValidatingAsync() public Task ThrowIfURLIsNotResolvableWhenValidatingAsync() { return Assert.ThrowsAsync(() => - OpenApiService.ValidateOpenApiDocumentAsync("https://example.org/itdoesnmatter", _logger)); + OpenApiService.ValidateOpenApiDocumentAsync("https://example.org926f4f21-88e7-4dc5-bf88-6c529bb77844/itdoesnmatter", _logger)); } [Fact] From eb103ef4a5a6b75b89e4e904e01a18e56f13e46d Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 22 Aug 2025 14:09:19 -0400 Subject: [PATCH 39/52] ci: adds release please wf to support vi branch --- .github/workflows/release-please-gha.yml | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/release-please-gha.yml diff --git a/.github/workflows/release-please-gha.yml b/.github/workflows/release-please-gha.yml new file mode 100644 index 000000000..a730548a2 --- /dev/null +++ b/.github/workflows/release-please-gha.yml @@ -0,0 +1,37 @@ +## ----------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See LICENSE.txt in the project root for license information. +## ----------------------------------------------------------------------------- +# +# Summary: +# This GitHub Actions workflow automates the release process using Release Please. +# It triggers on pushes to the main branch, generates a GitHub App token using organization +# variables and secrets, and then runs the release-please-action to manage versioning and changelogs. + +name: Release Please + +on: + push: + branches: + - main + - support/v1 + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Generate GitHub App token + id: app-token + uses: actions/create-github-app-token@v2 + with: + app-id: ${{ vars.RELEASE_PLEASE_TOKEN_PROVIDER_APP_ID }} + private-key: ${{ secrets.RELEASE_PLEASE_TOKEN_PROVIDER_PEM }} + + - name: Release Please + uses: googleapis/release-please-action@v4 + with: + token: ${{ steps.app-token.outputs.token }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json From 4697af47cb974386867e8b13118eff2e928abb4e Mon Sep 17 00:00:00 2001 From: "vitaly.melnik" Date: Fri, 22 Aug 2025 20:35:13 +0300 Subject: [PATCH 40/52] fix: missing examples when one example is with an empty array. Signed-off-by: Vincent Biret --- .../Models/OpenApiExample.cs | 5 +++- .../Models/OpenApiMediaType.cs | 30 +------------------ .../V3Tests/OpenApiMediaTypeTests.cs | 9 ++++++ .../examplesWithEmptyArray.json | 7 +++++ 4 files changed, 21 insertions(+), 30 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiExample.cs b/src/Microsoft.OpenApi/Models/OpenApiExample.cs index c78353127..78b02d9fc 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiExample.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiExample.cs @@ -138,7 +138,10 @@ public void Serialize(IOpenApiWriter writer, OpenApiSpecVersion version) writer.WriteProperty(OpenApiConstants.Description, Description); // value - writer.WriteOptionalObject(OpenApiConstants.Value, Value, (w, v) => w.WriteAny(v)); + if (Value is not null) + { + writer.WriteRequiredObject(OpenApiConstants.Value, Value, (w, v) => w.WriteAny(v)); + } // externalValue writer.WriteProperty(OpenApiConstants.ExternalValue, ExternalValue); diff --git a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs index 1ee1ce176..592154971 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiMediaType.cs @@ -79,7 +79,7 @@ public void SerializeAsV3(IOpenApiWriter writer) // examples if (Examples != null && Examples.Any()) { - SerializeExamples(writer, Examples); + writer.WriteOptionalMap(OpenApiConstants.Examples, Examples, (w, e) => e.SerializeAsV3(w)); } // encoding @@ -98,33 +98,5 @@ public void SerializeAsV2(IOpenApiWriter writer) { // Media type does not exist in V2. } - - private static void SerializeExamples(IOpenApiWriter writer, IDictionary examples) - { - /* Special case for writing out empty arrays as valid response examples - * Check if there is any example with an empty array as its value and set the flag `hasEmptyArray` to true - * */ - var hasEmptyArray = examples.Values.Any( static example => - example.Value is OpenApiArray arr && arr.Count == 0 - ); - - if (hasEmptyArray) - { - writer.WritePropertyName(OpenApiConstants.Examples); - writer.WriteStartObject(); - foreach (var kvp in examples.Where(static kvp => kvp.Value.Value is OpenApiArray arr && arr.Count == 0)) - { - writer.WritePropertyName(kvp.Key); - writer.WriteStartObject(); - writer.WriteRequiredObject(OpenApiConstants.Value, kvp.Value.Value, (w, v) => w.WriteAny(v)); - writer.WriteEndObject(); - } - writer.WriteEndObject(); - } - else - { - writer.WriteOptionalMap(OpenApiConstants.Examples, examples, (w, e) => e.SerializeAsV3(w)); - } - } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs index 266809561..db704c29b 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs @@ -98,7 +98,16 @@ public void ParseMediaTypeWithEmptyArrayInExamplesWorks() }, ""examples"": { ""Success response - no results"": { + ""summary"": ""empty array summary"", + ""description"": ""empty array description"", ""value"": [ ] + }, + ""Success response - with results"": { + ""summary"": ""array summary"", + ""description"": ""array description"", + ""value"": [ + 1 + ] } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiMediaType/examplesWithEmptyArray.json b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiMediaType/examplesWithEmptyArray.json index 0d13dcaf2..c2b0a09e4 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiMediaType/examplesWithEmptyArray.json +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiMediaType/examplesWithEmptyArray.json @@ -12,7 +12,14 @@ }, "examples": { "Success response - no results": { + "summary": "empty array summary", + "description": "empty array description", "value": [] + }, + "Success response - with results": { + "summary": "array summary", + "description": "array description", + "value": [ 1 ] } } } \ No newline at end of file From e9def6387f8823f830eab978395a5ecc59eccd05 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 22 Aug 2025 14:34:11 -0400 Subject: [PATCH 41/52] chore: aligns new test value with expected serialization format Signed-off-by: Vincent Biret --- .../V3Tests/OpenApiMediaTypeTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs index db704c29b..e699171bc 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiMediaTypeTests.cs @@ -106,7 +106,7 @@ public void ParseMediaTypeWithEmptyArrayInExamplesWorks() ""summary"": ""array summary"", ""description"": ""array description"", ""value"": [ - 1 + ""1"" ] } } From c3db90048de3a92697bd3ed38ebfef30fbb3b7db Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 22 Aug 2025 14:53:40 -0400 Subject: [PATCH 42/52] chore(support/v1): release 1.6.25 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ Directory.Build.props | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index b734e18f9..8e64e469e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.24" + ".": "1.6.25" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 58c9afec2..543f68905 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.6.25](https://github.com/microsoft/openapi.net/compare/v1.6.24...v1.6.25) (2025-08-22) + + +### Bug Fixes + +* missing examples when one example is with an empty array. ([4697af4](https://github.com/microsoft/openapi.net/commit/4697af47cb974386867e8b13118eff2e928abb4e)) + ## [1.6.24](https://github.com/microsoft/OpenAPI.NET/compare/1.6.23...v1.6.24) (2025-04-01) diff --git a/Directory.Build.props b/Directory.Build.props index c4d5e51ba..d69dd1740 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 1.6.24 + 1.6.25 From c14dd2434fbb1ec83882431fc67a9f05455710df Mon Sep 17 00:00:00 2001 From: "Brodski, David" Date: Thu, 18 Sep 2025 16:34:52 -0400 Subject: [PATCH 43/52] Fix OpenApiEncoding explode property serialization --- .../Models/OpenApiEncoding.cs | 17 +++++-- .../Models/OpenApiEncodingTests.cs | 50 +++++++++++++++++++ 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs index 77d601a22..5e509949c 100644 --- a/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs +++ b/src/Microsoft.OpenApi/Models/OpenApiEncoding.cs @@ -13,6 +13,10 @@ namespace Microsoft.OpenApi.Models /// public class OpenApiEncoding : IOpenApiSerializable, IOpenApiExtensible { + /// + /// Explode backing variable + /// + private bool? _explode; /// /// The Content-Type for encoding a specific property. /// The value can be a specific media type (e.g. application/json), @@ -37,7 +41,11 @@ public class OpenApiEncoding : IOpenApiSerializable, IOpenApiExtensible /// For all other styles, the default value is false. /// This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded. /// - public bool? Explode { get; set; } + public bool? Explode + { + get => _explode ?? Style == ParameterStyle.Form; + set => _explode = value; + } /// /// Determines whether the parameter value SHOULD allow reserved characters, @@ -65,7 +73,7 @@ public OpenApiEncoding(OpenApiEncoding encoding) ContentType = encoding?.ContentType ?? ContentType; Headers = encoding?.Headers != null ? new Dictionary(encoding.Headers) : null; Style = encoding?.Style ?? Style; - Explode = encoding?.Explode ?? Explode; + Explode = encoding?._explode; AllowReserved = encoding?.AllowReserved ?? AllowReserved; Extensions = encoding?.Extensions != null ? new Dictionary(encoding.Extensions) : null; } @@ -89,7 +97,10 @@ public void SerializeAsV3(IOpenApiWriter writer) writer.WriteProperty(OpenApiConstants.Style, Style?.GetDisplayName()); // explode - writer.WriteProperty(OpenApiConstants.Explode, Explode, false); + if (_explode.HasValue) + { + writer.WriteProperty(OpenApiConstants.Explode, Explode); + } // allowReserved writer.WriteProperty(OpenApiConstants.AllowReserved, AllowReserved, false); diff --git a/test/Microsoft.OpenApi.Tests/Models/OpenApiEncodingTests.cs b/test/Microsoft.OpenApi.Tests/Models/OpenApiEncodingTests.cs index fe699f7aa..30d06dae7 100644 --- a/test/Microsoft.OpenApi.Tests/Models/OpenApiEncodingTests.cs +++ b/test/Microsoft.OpenApi.Tests/Models/OpenApiEncodingTests.cs @@ -78,5 +78,55 @@ public void SerializeAdvanceEncodingAsV3YamlWorks() expected = expected.MakeLineBreaksEnvironmentNeutral(); actual.Should().Be(expected); } + + [Theory] + [InlineData(ParameterStyle.Form, true)] + [InlineData(ParameterStyle.SpaceDelimited, false)] + [InlineData(null, false)] + public void WhenStyleIsFormTheDefaultValueOfExplodeShouldBeTrueOtherwiseFalse(ParameterStyle? style, bool expectedExplode) + { + // Arrange + var parameter = new OpenApiEncoding + { + Style = style + }; + + // Act & Assert + parameter.Explode.Should().Be(expectedExplode); + } + + [Theory] + [InlineData(true, true)] + [InlineData(false, true)] + [InlineData(null, false)] + public void WhenExplodeIsSetOutputShouldHaveExplode(bool? expectedExplode, bool hasExplode) + { + // Arrange + OpenApiEncoding parameter = new() + { + ContentType = "multipart/form-data", + Style = ParameterStyle.Form, + Explode = expectedExplode, + }; + + var expected = + $""" + contentType: multipart/form-data + style: form + """; + + if (hasExplode) + { + expected = expected + $"\nexplode: {expectedExplode.ToString().ToLower()}"; + } + + // Act + var actual = parameter.SerializeAsYaml(OpenApiSpecVersion.OpenApi3_0); + + // Assert + actual = actual.MakeLineBreaksEnvironmentNeutral(); + expected = expected.MakeLineBreaksEnvironmentNeutral(); + actual.Should().Be(expected); + } } } From c9b1aa360880fb7a765b0e40f5e063ac001041a6 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 19 Sep 2025 19:52:35 -0400 Subject: [PATCH 44/52] chore(support/v1): release 1.6.26 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 7 +++++++ Directory.Build.props | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 8e64e469e..1c42af88e 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.25" + ".": "1.6.26" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 543f68905..ebb29d8d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.6.26](https://github.com/microsoft/openapi.net/compare/v1.6.25...v1.6.26) (2025-09-19) + + +### Bug Fixes + +* OpenApiEncoding explode default value when using form style ([09b5a28](https://github.com/microsoft/openapi.net/commit/09b5a28da90963ade2051d2581ad89ef02f1514d)) + ## [1.6.25](https://github.com/microsoft/openapi.net/compare/v1.6.24...v1.6.25) (2025-08-22) diff --git a/Directory.Build.props b/Directory.Build.props index d69dd1740..3bfc89070 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 1.6.25 + 1.6.26 From 3fadb7d9d0c4c4348a4c2eb8ffcf50efd79f7226 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 2 Oct 2025 13:04:41 -0400 Subject: [PATCH 45/52] fix: typo in encoding allow reserved deserialization Signed-off-by: Vincent Biret --- .../V3/OpenApiEncodingDeserializer.cs | 2 +- .../V3Tests/OpenApiEncodingTests.cs | 24 +++++++++++++++++++ .../encodingWithAllowReserved.yaml | 5 ++++ 3 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiEncoding/encodingWithAllowReserved.yaml diff --git a/src/Microsoft.OpenApi.Readers/V3/OpenApiEncodingDeserializer.cs b/src/Microsoft.OpenApi.Readers/V3/OpenApiEncodingDeserializer.cs index c627ea8f5..8dd08819e 100644 --- a/src/Microsoft.OpenApi.Readers/V3/OpenApiEncodingDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V3/OpenApiEncodingDeserializer.cs @@ -32,7 +32,7 @@ internal static partial class OpenApiV3Deserializer (o, n) => o.Explode = bool.Parse(n.GetScalarValue()) }, { - "allowedReserved", + "allowReserved", (o, n) => o.AllowReserved = bool.Parse(n.GetScalarValue()) }, }; diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs index 2b9c23fe1..6a561ec4f 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiEncodingTests.cs @@ -76,5 +76,29 @@ public void ParseAdvancedEncodingShouldSucceed() } }); } + [Fact] + public void ParseEncodingWithAllowReservedShouldSucceed() + { + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "encodingWithAllowReserved.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + var encoding = OpenApiV3Deserializer.LoadEncoding(node); + + // Assert + Assert.Equivalent( + new OpenApiEncoding + { + ContentType = "application/x-www-form-urlencoded", + Style = ParameterStyle.Form, + Explode = true, + AllowReserved = true + }, encoding); + } } } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiEncoding/encodingWithAllowReserved.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiEncoding/encodingWithAllowReserved.yaml new file mode 100644 index 000000000..c42f9f8c2 --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiEncoding/encodingWithAllowReserved.yaml @@ -0,0 +1,5 @@ +# https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#encodingObject +contentType: application/x-www-form-urlencoded +style: form +explode: true +allowReserved: true \ No newline at end of file From 905058dd12122b53a8176f4d3d71ff50cb614d6c Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Thu, 2 Oct 2025 14:38:55 -0400 Subject: [PATCH 46/52] chore(support/v1): release 1.6.27 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ Directory.Build.props | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 1c42af88e..cad7b2949 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.26" + ".": "1.6.27" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index ebb29d8d3..4e4486319 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [1.6.27](https://github.com/microsoft/openapi.net/compare/v1.6.26...v1.6.27) (2025-10-02) + + +### Bug Fixes + +* typo in encoding allow reserved deserialization ([6eeca52](https://github.com/microsoft/openapi.net/commit/6eeca5283bcbf6ee9d4065cd5581a36d96ad930a)) +* typo in encoding allow reserved deserialization ([3fadb7d](https://github.com/microsoft/openapi.net/commit/3fadb7d9d0c4c4348a4c2eb8ffcf50efd79f7226)) + ## [1.6.26](https://github.com/microsoft/openapi.net/compare/v1.6.25...v1.6.26) (2025-09-19) diff --git a/Directory.Build.props b/Directory.Build.props index 3bfc89070..93bd1f0ef 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 1.6.26 + 1.6.27 From fe5cedaef9009c36ca69133148fd3122d4fc434b Mon Sep 17 00:00:00 2001 From: Mahdi Golestan Date: Fri, 3 Oct 2025 10:49:29 +0330 Subject: [PATCH 47/52] Enhance server creation logic and add unit tests Updated the `MakeServers` method to include a check for `defaultUrl` when creating servers. The method now returns early if all relevant parameters are null, and the host assignment from `defaultUrl` now preserves the port. Added new unit tests in `OpenApiServerTests.cs` to ensure that base URLs with ports are correctly handled. Tests cover scenarios for base URLs with a port, with a port and path, and with a non-standard port. --- .../V2/OpenApiDocumentDeserializer.cs | 6 +- .../V2Tests/OpenApiServerTests.cs | 69 +++++++++++++++++++ 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs index 07bdcb301..99b316b79 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs @@ -145,8 +145,8 @@ private static void MakeServers(IList servers, ParsingContext con basePath = "/"; } - // If nothing is provided, don't create a server - if (host == null && basePath == null && schemes == null) + // If nothing is provided and there's no defaultUrl, don't create a server + if (host == null && basePath == null && schemes == null && defaultUrl == null) { return; } @@ -161,7 +161,7 @@ private static void MakeServers(IList servers, ParsingContext con // Fill in missing information based on the defaultUrl if (defaultUrl != null) { - host = host ?? defaultUrl.GetComponents(UriComponents.NormalizedHost, UriFormat.SafeUnescaped); + host = host ?? defaultUrl.GetComponents(UriComponents.Host | UriComponents.Port, UriFormat.SafeUnescaped); basePath = basePath ?? defaultUrl.GetComponents(UriComponents.Path, UriFormat.SafeUnescaped); schemes = schemes ?? new List { defaultUrl.GetComponents(UriComponents.Scheme, UriFormat.SafeUnescaped) }; } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs index f254800b9..bf7520c34 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs @@ -323,5 +323,74 @@ public void InvalidHostShouldYieldError() SpecificationVersion = OpenApiSpecVersion.OpenApi2_0 }); } + + [Fact] + public void BaseUrlWithPortShouldPreservePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + BaseUrl = new("http://demo.testfire.net:8080/") + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("http://demo.testfire.net:8080/", server.Url); + } + + [Fact] + public void BaseUrlWithPortAndPathShouldPreservePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + BaseUrl = new("http://demo.testfire.net:8080/swagger/properties.json") + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("http://demo.testfire.net:8080/swagger/properties.json", server.Url); + } + + [Fact] + public void BaseUrlWithNonStandardPortShouldPreservePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + BaseUrl = new("https://api.example.com:9443/v1/openapi.yaml") + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("https://api.example.com:9443/v1/openapi.yaml", server.Url); + } } } From 664a2f4e1442053cd4bf6b4c818f57a2c865ab2d Mon Sep 17 00:00:00 2001 From: Mahdi Golestan Date: Fri, 3 Oct 2025 17:26:08 +0330 Subject: [PATCH 48/52] Improve server URL handling and add unit tests Refactor `MakeServers` method for better null checks on `host`, `basePath`, `schemes`, and `defaultUrl`. Enhance `BuildUrl` to remove default ports (80 for HTTP, 443 for HTTPS) from generated URLs. Add unit tests in `OpenApiServerTests.cs` to verify correct URL generation when standard ports are used. --- .../V2/OpenApiDocumentDeserializer.cs | 11 ++- .../V2Tests/OpenApiServerTests.cs | 96 +++++++++++++++++++ 2 files changed, 105 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs index 99b316b79..c23813bbb 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs @@ -146,13 +146,13 @@ private static void MakeServers(IList servers, ParsingContext con } // If nothing is provided and there's no defaultUrl, don't create a server - if (host == null && basePath == null && schemes == null && defaultUrl == null) + if (string.IsNullOrEmpty(host) && string.IsNullOrEmpty(basePath) && (schemes == null || schemes.Count == 0) && defaultUrl == null) { return; } //Validate host - if (host != null && !IsHostValid(host)) + if (!string.IsNullOrEmpty(host) && !IsHostValid(host)) { rootNode.Context.Diagnostic.Errors.Add(new(rootNode.Context.GetLocation(), "Invalid host")); return; @@ -236,6 +236,13 @@ private static string BuildUrl(string scheme, string host, string basePath) uriBuilder.Port = port.Value; } + // Remove default ports to clean up the URL + if ((uriBuilder.Scheme == "https" && uriBuilder.Port == 443) || + (uriBuilder.Scheme == "http" && uriBuilder.Port == 80)) + { + uriBuilder.Port = -1; // Setting to -1 removes the port from the URL + } + return uriBuilder.ToString(); } diff --git a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs index bf7520c34..0b8411ac3 100644 --- a/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs +++ b/test/Microsoft.OpenApi.Readers.Tests/V2Tests/OpenApiServerTests.cs @@ -392,5 +392,101 @@ public void BaseUrlWithNonStandardPortShouldPreservePort() Assert.Single(doc.Servers); Assert.Equal("https://api.example.com:9443/v1/openapi.yaml", server.Url); } + + [Fact] + public void BaseUrlWithStandardHttpsPortShouldRemovePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + BaseUrl = new("https://foo.bar/api") + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("https://foo.bar/api", server.Url); + } + + [Fact] + public void BaseUrlWithStandardHttpPortShouldRemovePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + BaseUrl = new("http://foo.bar/api") + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("http://foo.bar/api", server.Url); + } + + [Fact] + public void HostWithStandardHttpsPortShouldRemovePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + host: foo.bar:443 + schemes: + - https + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("https://foo.bar/", server.Url); + } + + [Fact] + public void HostWithStandardHttpPortShouldRemovePort() + { + var input = + """ + swagger: 2.0 + info: + title: test + version: 1.0.0 + host: foo.bar:80 + schemes: + - http + paths: {} + """; + var reader = new OpenApiStringReader(new() + { + }); + + var doc = reader.Read(input, out var diagnostic); + + var server = doc.Servers.First(); + Assert.Single(doc.Servers); + Assert.Equal("http://foo.bar/", server.Url); + } } } From e256d29fa8b47f267e63749c36f61283851d8bbc Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Fri, 3 Oct 2025 11:26:11 -0400 Subject: [PATCH 49/52] fix: missing deserialization for header content property in 3.0 --- .../V3/OpenApiHeaderDeserializer.cs | 4 + .../V3Tests/OpenApiHeaderTests.cs | 172 ++++++++++++++++++ .../Samples/OpenApiHeader/basicHeader.yaml | 3 + .../OpenApiHeader/headerWithContent.yaml | 11 ++ .../headerWithMultipleContentTypes.yaml | 11 ++ .../headerWithStyleAndContent.yaml | 11 ++ 6 files changed, 212 insertions(+) create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiHeaderTests.cs create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/basicHeader.yaml create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithContent.yaml create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithMultipleContentTypes.yaml create mode 100644 test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithStyleAndContent.yaml diff --git a/src/Microsoft.OpenApi.Readers/V3/OpenApiHeaderDeserializer.cs b/src/Microsoft.OpenApi.Readers/V3/OpenApiHeaderDeserializer.cs index cd74df4b4..5d91eb833 100644 --- a/src/Microsoft.OpenApi.Readers/V3/OpenApiHeaderDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V3/OpenApiHeaderDeserializer.cs @@ -43,6 +43,10 @@ internal static partial class OpenApiV3Deserializer "explode", (o, n) => o.Explode = bool.Parse(n.GetScalarValue()) }, + { + "content", + (o, n) => o.Content = n.CreateMap(LoadMediaType) + }, { "schema", (o, n) => o.Schema = LoadSchema(n) diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiHeaderTests.cs b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiHeaderTests.cs new file mode 100644 index 000000000..79626ed00 --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/OpenApiHeaderTests.cs @@ -0,0 +1,172 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using FluentAssertions; +using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Readers.ParseNodes; +using Microsoft.OpenApi.Readers.V3; +using SharpYaml.Serialization; +using Xunit; + +namespace Microsoft.OpenApi.Readers.Tests.V3Tests +{ + [Collection("DefaultSettings")] + public class OpenApiHeaderTests + { + private const string SampleFolderPath = "V3Tests/Samples/OpenApiHeader/"; + + [Fact] + public void ParseBasicHeaderShouldSucceed() + { + // Arrange + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "basicHeader.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var header = OpenApiV3Deserializer.LoadHeader(node); + + // Assert + Assert.Equivalent( + new OpenApiHeader + { + Description = "The number of allowed requests in the current period", + Schema = new OpenApiSchema() + { + Type = "integer" + } + }, header); + } + + [Fact] + public void ParseHeaderWithContentShouldSucceed() + { + // Arrange + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "headerWithContent.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var header = OpenApiV3Deserializer.LoadHeader(node); + + // Assert + Assert.Equivalent( + new OpenApiHeader + { + Description = "A complex header with content", + Content = new Dictionary() + { + ["application/json"] = new() + { + Schema = new OpenApiSchema() + { + Type = "object", + Properties = new Dictionary() + { + ["timestamp"] = new OpenApiSchema() + { + Type = "string", + Format = "date-time" + }, + ["value"] = new OpenApiSchema() + { + Type = "integer" + } + } + } + } + } + }, header); + } + + [Fact] + public void ParseHeaderWithMultipleContentTypesShouldSucceed() + { + // Arrange + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "headerWithMultipleContentTypes.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var header = OpenApiV3Deserializer.LoadHeader(node); + + // Assert + Assert.Equivalent( + new OpenApiHeader + { + Description = "A header that accepts multiple content types", + Content = new Dictionary() + { + ["application/json"] = new() + { + Schema = new OpenApiSchema() + { + Type = "object", + Properties = new Dictionary() + { + ["data"] = new OpenApiSchema() + { + Type = "string" + } + } + } + }, + ["text/plain"] = new() + { + Schema = new OpenApiSchema() + { + Type = "string" + } + } + } + }, header); + } + + [Fact] + public void ParseHeaderWithStyleAndContentShouldPreferContent() + { + // Arrange + using var stream = Resources.GetStream(Path.Combine(SampleFolderPath, "headerWithStyleAndContent.yaml")); + var yamlStream = new YamlStream(); + yamlStream.Load(new StreamReader(stream)); + var yamlNode = yamlStream.Documents.First().RootNode; + + var diagnostic = new OpenApiDiagnostic(); + var context = new ParsingContext(diagnostic); + + var node = new MapNode(context, (YamlMappingNode)yamlNode); + + // Act + var header = OpenApiV3Deserializer.LoadHeader(node); + + // Assert + // Both content and style can be present, content takes precedence for serialization behavior + Assert.NotNull(header.Content); + Assert.Single(header.Content); + Assert.True(header.Content.ContainsKey("application/json")); + Assert.Equal(ParameterStyle.Simple, header.Style); // Style can still be present + } + } +} diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/basicHeader.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/basicHeader.yaml new file mode 100644 index 000000000..015804759 --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/basicHeader.yaml @@ -0,0 +1,3 @@ +description: "The number of allowed requests in the current period" +schema: + type: integer \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithContent.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithContent.yaml new file mode 100644 index 000000000..dc2df9ffd --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithContent.yaml @@ -0,0 +1,11 @@ +description: "A complex header with content" +content: + application/json: + schema: + type: object + properties: + timestamp: + type: string + format: date-time + value: + type: integer \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithMultipleContentTypes.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithMultipleContentTypes.yaml new file mode 100644 index 000000000..82c74ea60 --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithMultipleContentTypes.yaml @@ -0,0 +1,11 @@ +description: "A header that accepts multiple content types" +content: + application/json: + schema: + type: object + properties: + data: + type: string + text/plain: + schema: + type: string \ No newline at end of file diff --git a/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithStyleAndContent.yaml b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithStyleAndContent.yaml new file mode 100644 index 000000000..fbe176683 --- /dev/null +++ b/test/Microsoft.OpenApi.Readers.Tests/V3Tests/Samples/OpenApiHeader/headerWithStyleAndContent.yaml @@ -0,0 +1,11 @@ +description: "A header with both style and content (content should take precedence)" +style: simple +schema: + type: string +content: + application/json: + schema: + type: object + properties: + value: + type: string \ No newline at end of file From e332b5747b8f39e45c7810b8c1cfdd46e0dda4cf Mon Sep 17 00:00:00 2001 From: Mahdigln <139457032+Mahdigln@users.noreply.github.com> Date: Fri, 3 Oct 2025 23:50:29 +0330 Subject: [PATCH 50/52] Update src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs Co-authored-by: Vincent Biret --- .../V2/OpenApiDocumentDeserializer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs index c23813bbb..0141d734a 100644 --- a/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs +++ b/src/Microsoft.OpenApi.Readers/V2/OpenApiDocumentDeserializer.cs @@ -237,8 +237,8 @@ private static string BuildUrl(string scheme, string host, string basePath) } // Remove default ports to clean up the URL - if ((uriBuilder.Scheme == "https" && uriBuilder.Port == 443) || - (uriBuilder.Scheme == "http" && uriBuilder.Port == 80)) + if (("https".Equals(uriBuilder.Scheme, StringComparison.OrdinalIgnoreCase) && uriBuilder.Port == 443) || + ("http".Equals(uriBuilder.Scheme, StringComparison.OrdinalIgnoreCase) && uriBuilder.Port == 80)) { uriBuilder.Port = -1; // Setting to -1 removes the port from the URL } From 0c734b067a1f2fe6d25b96fa3f7f9919c0fee4dc Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 6 Oct 2025 14:43:37 -0400 Subject: [PATCH 51/52] chore(support/v1): release 1.6.28 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 9 +++++++++ Directory.Build.props | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index cad7b2949..43354b10b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.6.27" + ".": "1.6.28" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e4486319..413a903ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [1.6.28](https://github.com/microsoft/openapi.net/compare/v1.6.27...v1.6.28) (2025-10-06) + + +### Bug Fixes + +* Improve server creation and URL handling logic to maintain port ([a15c50e](https://github.com/microsoft/openapi.net/commit/a15c50ef2d13483bb64a5d5767d58da2d89aeee7)) +* missing deserialization for header content property in 3.0 ([7c65a49](https://github.com/microsoft/openapi.net/commit/7c65a49117a869f772cdd91f0cf9c2eea02dc7c5)) +* missing deserialization for header content property in 3.0 ([e256d29](https://github.com/microsoft/openapi.net/commit/e256d29fa8b47f267e63749c36f61283851d8bbc)) + ## [1.6.27](https://github.com/microsoft/openapi.net/compare/v1.6.26...v1.6.27) (2025-10-02) diff --git a/Directory.Build.props b/Directory.Build.props index 93bd1f0ef..7d99aad53 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -12,7 +12,7 @@ https://github.com/Microsoft/OpenAPI.NET © Microsoft Corporation. All rights reserved. OpenAPI .NET - 1.6.27 + 1.6.28 From 47b2529411763b4c84090647b94d03d2970da211 Mon Sep 17 00:00:00 2001 From: Vincent Biret Date: Mon, 6 Oct 2025 14:58:57 -0400 Subject: [PATCH 52/52] ci: fixes target branch detection support for release please --- .github/workflows/release-please-gha.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-please-gha.yml b/.github/workflows/release-please-gha.yml index a730548a2..0fe9326ea 100644 --- a/.github/workflows/release-please-gha.yml +++ b/.github/workflows/release-please-gha.yml @@ -35,3 +35,4 @@ jobs: token: ${{ steps.app-token.outputs.token }} config-file: release-please-config.json manifest-file: .release-please-manifest.json + target-branch: ${{ github.ref_name }}