Skip to content

Commit 02369d0

Browse files
gavinbarronbaywet
andauthored
fix: circular ref guard (#3042)
* fix: circular ref guard * style fix and benchmark updates * fix typo * add using * update benchmarks * Update src/Microsoft.OpenApi/Validations/Rules/OpenApiSchemaRules.cs Co-authored-by: Vincent Biret <vibiret@microsoft.com> --------- Co-authored-by: Vincent Biret <vibiret@microsoft.com>
1 parent 838c847 commit 02369d0

11 files changed

Lines changed: 430 additions & 125 deletions

File tree

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
```
22
33
BenchmarkDotNet v0.14.0, Ubuntu 24.04.4 LTS (Noble Numbat)
4-
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
4+
AMD EPYC 9V74, 1 CPU, 4 logical and 2 physical cores
55
.NET SDK 10.0.302
66
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
77
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
@@ -12,7 +12,7 @@ WarmupCount=3
1212
```
1313
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
1414
|------------- |---------------:|-------------:|-------------:|-----------:|-----------:|----------:|-------------:|
15-
| PetStoreYaml | 750.3 μs | 320.4 μs | 17.56 μs | 23.4375 | 3.9063 | - | 438.94 KB |
16-
| PetStoreJson | 875.7 μs | 167.0 μs | 9.15 μs | 25.3906 | 1.9531 | - | 446.38 KB |
17-
| GHESYaml | 1,775,302.8 μs | 137,608.1 μs | 7,542.76 μs | 30000.0000 | 23000.0000 | 4000.0000 | 438624.06 KB |
18-
| GHESJson | 1,924,124.8 μs | 514,004.3 μs | 28,174.31 μs | 30000.0000 | 23000.0000 | 4000.0000 | 445806.12 KB |
15+
| PetStoreYaml | 656.5 μs | 215.4 μs | 11.81 μs | 23.4375 | 3.9063 | - | 438.94 KB |
16+
| PetStoreJson | 749.0 μs | 150.6 μs | 8.25 μs | 25.3906 | 1.9531 | - | 446.38 KB |
17+
| GHESYaml | 1,604,748.4 μs | 199,004.5 μs | 10,908.11 μs | 30000.0000 | 23000.0000 | 4000.0000 | 438632.27 KB |
18+
| GHESJson | 1,770,229.0 μs | 636,403.8 μs | 34,883.44 μs | 30000.0000 | 23000.0000 | 4000.0000 | 445808.88 KB |
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
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
2-
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,750.3 μs,320.4 μs,17.56 μs,23.4375,3.9063,0.0000,438.94 KB
3-
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,875.7 μs,167.0 μs,9.15 μs,25.3906,1.9531,0.0000,446.38 KB
4-
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,775,302.8 μs","137,608.1 μs","7,542.76 μs",30000.0000,23000.0000,4000.0000,438624.06 KB
5-
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,924,124.8 μs","514,004.3 μs","28,174.31 μs",30000.0000,23000.0000,4000.0000,445806.12 KB
2+
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,656.5 μs,215.4 μs,11.81 μs,23.4375,3.9063,0.0000,438.94 KB
3+
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,749.0 μs,150.6 μs,8.25 μs,25.3906,1.9531,0.0000,446.38 KB
4+
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,604,748.4 μs","199,004.5 μs","10,908.11 μs",30000.0000,23000.0000,4000.0000,438632.27 KB
5+
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111,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,770,229.0 μs","636,403.8 μs","34,883.44 μs",30000.0000,23000.0000,4000.0000,445808.88 KB

performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<html lang='en'>
33
<head>
44
<meta charset='utf-8' />
5-
<title>performance.Descriptions-20260819-175616</title>
5+
<title>performance.Descriptions-20260819-231935</title>
66

77
<style type="text/css">
88
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -14,7 +14,7 @@
1414
<body>
1515
<pre><code>
1616
BenchmarkDotNet v0.14.0, Ubuntu 24.04.4 LTS (Noble Numbat)
17-
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
17+
AMD EPYC 9V74, 1 CPU, 4 logical and 2 physical cores
1818
.NET SDK 10.0.302
1919
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
2020
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
@@ -26,10 +26,10 @@
2626
<table>
2727
<thead><tr><th>Method</th><th>Mean </th><th>Error </th><th>StdDev</th><th>Gen0</th><th>Gen1</th><th>Gen2</th><th>Allocated</th>
2828
</tr>
29-
</thead><tbody><tr><td>PetStoreYaml</td><td>750.3 &mu;s</td><td>320.4 &mu;s</td><td>17.56 &mu;s</td><td>23.4375</td><td>3.9063</td><td>-</td><td>438.94 KB</td>
30-
</tr><tr><td>PetStoreJson</td><td>875.7 &mu;s</td><td>167.0 &mu;s</td><td>9.15 &mu;s</td><td>25.3906</td><td>1.9531</td><td>-</td><td>446.38 KB</td>
31-
</tr><tr><td>GHESYaml</td><td>1,775,302.8 &mu;s</td><td>137,608.1 &mu;s</td><td>7,542.76 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>438624.06 KB</td>
32-
</tr><tr><td>GHESJson</td><td>1,924,124.8 &mu;s</td><td>514,004.3 &mu;s</td><td>28,174.31 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>445806.12 KB</td>
29+
</thead><tbody><tr><td>PetStoreYaml</td><td>656.5 &mu;s</td><td>215.4 &mu;s</td><td>11.81 &mu;s</td><td>23.4375</td><td>3.9063</td><td>-</td><td>438.94 KB</td>
30+
</tr><tr><td>PetStoreJson</td><td>749.0 &mu;s</td><td>150.6 &mu;s</td><td>8.25 &mu;s</td><td>25.3906</td><td>1.9531</td><td>-</td><td>446.38 KB</td>
31+
</tr><tr><td>GHESYaml</td><td>1,604,748.4 &mu;s</td><td>199,004.5 &mu;s</td><td>10,908.11 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>438632.27 KB</td>
32+
</tr><tr><td>GHESJson</td><td>1,770,229.0 &mu;s</td><td>636,403.8 &mu;s</td><td>34,883.44 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>445808.88 KB</td>
3333
</tr></tbody></table>
3434
</body>
3535
</html>

performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
```
22
33
BenchmarkDotNet v0.14.0, Ubuntu 24.04.4 LTS (Noble Numbat)
4-
AMD EPYC 7763, 1 CPU, 4 logical and 2 physical cores
4+
AMD EPYC 9V74, 1 CPU, 4 logical and 2 physical cores
55
.NET SDK 10.0.302
66
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
77
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
@@ -12,31 +12,31 @@ WarmupCount=3
1212
```
1313
| Method | Mean | Error | StdDev | Gen0 | Allocated |
1414
|---------------------------- |----------:|----------:|---------:|-------:|----------:|
15-
| EmptyApiCallback | 48.71 ns | 13.702 ns | 0.751 ns | 0.0124 | 208 B |
16-
| EmptyApiComponents | 226.57 ns | 45.828 ns | 2.512 ns | 0.0534 | 896 B |
17-
| EmptyApiContact | 29.46 ns | 3.469 ns | 0.190 ns | 0.0076 | 128 B |
18-
| EmptyApiDiscriminator | 28.54 ns | 9.155 ns | 0.502 ns | 0.0067 | 112 B |
19-
| EmptyDocument | 60.29 ns | 16.830 ns | 0.923 ns | 0.0162 | 272 B |
20-
| EmptyApiEncoding | 51.10 ns | 14.399 ns | 0.789 ns | 0.0129 | 216 B |
21-
| EmptyApiExample | 31.99 ns | 7.352 ns | 0.403 ns | 0.0091 | 152 B |
22-
| EmptyApiExternalDocs | 32.39 ns | 5.356 ns | 0.294 ns | 0.0072 | 120 B |
23-
| EmptyApiHeader | 76.36 ns | 32.340 ns | 1.773 ns | 0.0196 | 328 B |
24-
| EmptyApiInfo | 30.61 ns | 4.565 ns | 0.250 ns | 0.0091 | 152 B |
25-
| EmptyApiLicense | 28.90 ns | 7.119 ns | 0.390 ns | 0.0072 | 120 B |
26-
| EmptyApiLink | 52.01 ns | 11.111 ns | 0.609 ns | 0.0148 | 248 B |
27-
| EmptyApiMediaType | 73.56 ns | 5.497 ns | 0.301 ns | 0.0176 | 296 B |
28-
| EmptyApiOAuthFlow | 50.64 ns | 22.684 ns | 1.243 ns | 0.0129 | 216 B |
29-
| EmptyApiOAuthFlows | 32.67 ns | 6.929 ns | 0.380 ns | 0.0081 | 136 B |
30-
| EmptyApiOperation | 136.86 ns | 58.824 ns | 3.224 ns | 0.0348 | 584 B |
31-
| EmptyApiParameter | 75.91 ns | 20.049 ns | 1.099 ns | 0.0205 | 344 B |
32-
| EmptyApiPathItem | 63.50 ns | 19.078 ns | 1.046 ns | 0.0181 | 304 B |
33-
| EmptyApiPaths | 42.65 ns | 15.564 ns | 0.853 ns | 0.0100 | 168 B |
34-
| EmptyApiRequestBody | 59.87 ns | 15.210 ns | 0.834 ns | 0.0129 | 216 B |
35-
| EmptyApiResponse | 92.62 ns | 27.756 ns | 1.521 ns | 0.0234 | 392 B |
36-
| EmptyApiResponses | 42.38 ns | 2.652 ns | 0.145 ns | 0.0100 | 168 B |
37-
| EmptyApiSchema | 124.10 ns | 46.460 ns | 2.547 ns | 0.0415 | 696 B |
38-
| EmptyApiSecurityRequirement | 18.20 ns | 3.986 ns | 0.218 ns | 0.0062 | 104 B |
39-
| EmptyApiSecurityScheme | 32.71 ns | 3.952 ns | 0.217 ns | 0.0105 | 176 B |
40-
| EmptyApiServer | 55.11 ns | 29.756 ns | 1.631 ns | 0.0124 | 208 B |
41-
| EmptyApiServerVariable | 29.69 ns | 4.348 ns | 0.238 ns | 0.0076 | 128 B |
42-
| EmptyApiTag | 30.84 ns | 15.907 ns | 0.872 ns | 0.0086 | 144 B |
15+
| EmptyApiCallback | 46.16 ns | 18.788 ns | 1.030 ns | 0.0124 | 208 B |
16+
| EmptyApiComponents | 214.80 ns | 37.548 ns | 2.058 ns | 0.0534 | 896 B |
17+
| EmptyApiContact | 26.27 ns | 3.484 ns | 0.191 ns | 0.0076 | 128 B |
18+
| EmptyApiDiscriminator | 25.48 ns | 3.211 ns | 0.176 ns | 0.0067 | 112 B |
19+
| EmptyDocument | 57.00 ns | 41.689 ns | 2.285 ns | 0.0162 | 272 B |
20+
| EmptyApiEncoding | 47.68 ns | 8.340 ns | 0.457 ns | 0.0129 | 216 B |
21+
| EmptyApiExample | 26.77 ns | 3.066 ns | 0.168 ns | 0.0091 | 152 B |
22+
| EmptyApiExternalDocs | 26.18 ns | 9.349 ns | 0.512 ns | 0.0072 | 120 B |
23+
| EmptyApiHeader | 70.34 ns | 7.145 ns | 0.392 ns | 0.0196 | 328 B |
24+
| EmptyApiInfo | 26.83 ns | 7.860 ns | 0.431 ns | 0.0091 | 152 B |
25+
| EmptyApiLicense | 27.63 ns | 2.343 ns | 0.128 ns | 0.0072 | 120 B |
26+
| EmptyApiLink | 49.25 ns | 5.517 ns | 0.302 ns | 0.0148 | 248 B |
27+
| EmptyApiMediaType | 68.63 ns | 1.123 ns | 0.062 ns | 0.0176 | 296 B |
28+
| EmptyApiOAuthFlow | 47.06 ns | 12.170 ns | 0.667 ns | 0.0129 | 216 B |
29+
| EmptyApiOAuthFlows | 26.24 ns | 6.435 ns | 0.353 ns | 0.0081 | 136 B |
30+
| EmptyApiOperation | 128.29 ns | 19.146 ns | 1.049 ns | 0.0348 | 584 B |
31+
| EmptyApiParameter | 70.68 ns | 8.696 ns | 0.477 ns | 0.0205 | 344 B |
32+
| EmptyApiPathItem | 60.18 ns | 11.229 ns | 0.616 ns | 0.0181 | 304 B |
33+
| EmptyApiPaths | 38.03 ns | 3.233 ns | 0.177 ns | 0.0100 | 168 B |
34+
| EmptyApiRequestBody | 47.98 ns | 28.401 ns | 1.557 ns | 0.0129 | 216 B |
35+
| EmptyApiResponse | 84.64 ns | 9.700 ns | 0.532 ns | 0.0234 | 392 B |
36+
| EmptyApiResponses | 39.10 ns | 8.984 ns | 0.492 ns | 0.0100 | 168 B |
37+
| EmptyApiSchema | 104.01 ns | 32.503 ns | 1.782 ns | 0.0416 | 696 B |
38+
| EmptyApiSecurityRequirement | 14.65 ns | 6.529 ns | 0.358 ns | 0.0062 | 104 B |
39+
| EmptyApiSecurityScheme | 27.18 ns | 2.088 ns | 0.114 ns | 0.0105 | 176 B |
40+
| EmptyApiServer | 46.51 ns | 1.908 ns | 0.105 ns | 0.0124 | 208 B |
41+
| EmptyApiServerVariable | 25.89 ns | 2.527 ns | 0.138 ns | 0.0076 | 128 B |
42+
| EmptyApiTag | 29.30 ns | 0.794 ns | 0.043 ns | 0.0086 | 144 B |

0 commit comments

Comments
 (0)