Skip to content

Commit 070bb0a

Browse files
committed
fix: harden yaml parsing
1 parent 59c56cf commit 070bb0a

30 files changed

Lines changed: 1720 additions & 206 deletions
Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
```
22
3-
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3476)
4-
11th Gen Intel Core i7-1185G7 3.00GHz, 1 CPU, 8 logical and 4 physical cores
5-
.NET SDK 9.0.202
6-
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
7-
ShortRun : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
3+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26200.9106) (Hyper-V)
4+
AMD EPYC 7763, 1 CPU, 16 logical and 8 physical cores
5+
.NET SDK 10.0.303
6+
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
7+
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
88
99
Job=ShortRun IterationCount=3 LaunchCount=1
1010
WarmupCount=3
1111
1212
```
13-
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14-
|------------- |---------------:|-------------:|-------------:|-----------:|-----------:|----------:|-------------:|
15-
| PetStoreYaml | 448.7 μs | 326.6 μs | 17.90 μs | 58.5938 | 11.7188 | - | 381.79 KB |
16-
| PetStoreJson | 484.8 μs | 156.9 μs | 8.60 μs | 62.5000 | 15.6250 | - | 389.28 KB |
17-
| GHESYaml | 1,008,349.6 μs | 565,392.0 μs | 30,991.04 μs | 66000.0000 | 23000.0000 | 4000.0000 | 382785 KB |
18-
| GHESJson | 1,039,447.0 μs | 267,501.0 μs | 14,662.63 μs | 67000.0000 | 23000.0000 | 4000.0000 | 389970.77 KB |
13+
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14+
|------------- |---------------:|---------------:|--------------:|-----------:|-----------:|----------:|-------------:|
15+
| PetStoreYaml | 941.6 μs | 1,888.8 μs | 103.53 μs | 23.4375 | 7.8125 | - | 440.21 KB |
16+
| PetStoreJson | 984.8 μs | 281.3 μs | 15.42 μs | 25.3906 | 1.9531 | - | 446.38 KB |
17+
| GHESYaml | 2,171,893.7 μs | 478,607.6 μs | 26,234.09 μs | 30000.0000 | 23000.0000 | 4000.0000 | 438630 KB |
18+
| GHESJson | 3,011,015.9 μs | 7,499,811.5 μs | 411,089.98 μs | 30000.0000 | 23000.0000 | 4000.0000 | 445811.67 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,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
3-
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
4-
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
5-
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
2+
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111111111111111,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,941.6 μs,"1,888.8 μs",103.53 μs,23.4375,7.8125,0.0000,440.21 KB
3+
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111111111111111,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,984.8 μs,281.3 μs,15.42 μs,25.3906,1.9531,0.0000,446.38 KB
4+
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,1111111111111111,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,"2,171,893.7 μs","478,607.6 μs","26,234.09 μs",30000.0000,23000.0000,4000.0000,438630 KB
5+
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,1111111111111111,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,"3,011,015.9 μs","7,499,811.5 μs","411,089.98 μs",30000.0000,23000.0000,4000.0000,445811.67 KB

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

Lines changed: 11 additions & 11 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-20250408-125836</title>
5+
<title>performance.Descriptions-20260818-205302</title>
66

77
<style type="text/css">
88
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -13,23 +13,23 @@
1313
</head>
1414
<body>
1515
<pre><code>
16-
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3476)
17-
11th Gen Intel Core i7-1185G7 3.00GHz, 1 CPU, 8 logical and 4 physical cores
18-
.NET SDK 9.0.202
19-
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
20-
ShortRun : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
16+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26200.9106) (Hyper-V)
17+
AMD EPYC 7763, 1 CPU, 16 logical and 8 physical cores
18+
.NET SDK 10.0.303
19+
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
20+
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
2121
</code></pre>
2222
<pre><code>Job=ShortRun IterationCount=3 LaunchCount=1
2323
WarmupCount=3
2424
</code></pre>
2525

2626
<table>
27-
<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>
27+
<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>448.7 &mu;s</td><td>326.6 &mu;s</td><td>17.90 &mu;s</td><td>58.5938</td><td>11.7188</td><td>-</td><td>381.79 KB</td>
30-
</tr><tr><td>PetStoreJson</td><td>484.8 &mu;s</td><td>156.9 &mu;s</td><td>8.60 &mu;s</td><td>62.5000</td><td>15.6250</td><td>-</td><td>389.28 KB</td>
31-
</tr><tr><td>GHESYaml</td><td>1,008,349.6 &mu;s</td><td>565,392.0 &mu;s</td><td>30,991.04 &mu;s</td><td>66000.0000</td><td>23000.0000</td><td>4000.0000</td><td>382785 KB</td>
32-
</tr><tr><td>GHESJson</td><td>1,039,447.0 &mu;s</td><td>267,501.0 &mu;s</td><td>14,662.63 &mu;s</td><td>67000.0000</td><td>23000.0000</td><td>4000.0000</td><td>389970.77 KB</td>
29+
</thead><tbody><tr><td>PetStoreYaml</td><td>941.6 &mu;s</td><td>1,888.8 &mu;s</td><td>103.53 &mu;s</td><td>23.4375</td><td>7.8125</td><td>-</td><td>440.21 KB</td>
30+
</tr><tr><td>PetStoreJson</td><td>984.8 &mu;s</td><td>281.3 &mu;s</td><td>15.42 &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>2,171,893.7 &mu;s</td><td>478,607.6 &mu;s</td><td>26,234.09 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>438630 KB</td>
32+
</tr><tr><td>GHESJson</td><td>3,011,015.9 &mu;s</td><td>7,499,811.5 &mu;s</td><td>411,089.98 &mu;s</td><td>30000.0000</td><td>23000.0000</td><td>4000.0000</td><td>445811.67 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: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
11
```
22
3-
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26100.3476)
4-
11th Gen Intel Core i7-1185G7 3.00GHz, 1 CPU, 8 logical and 4 physical cores
5-
.NET SDK 9.0.202
6-
[Host] : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
7-
ShortRun : .NET 8.0.14 (8.0.1425.11118), X64 RyuJIT AVX-512F+CD+BW+DQ+VL+VBMI
3+
BenchmarkDotNet v0.14.0, Windows 11 (10.0.26200.9106) (Hyper-V)
4+
AMD EPYC 7763, 1 CPU, 16 logical and 8 physical cores
5+
.NET SDK 10.0.303
6+
[Host] : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
7+
ShortRun : .NET 8.0.30 (8.0.3026.36720), X64 RyuJIT AVX2
88
99
Job=ShortRun IterationCount=3 LaunchCount=1
1010
WarmupCount=3
1111
1212
```
13-
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
14-
|---------------------------- |-----------:|-----------:|----------:|-------:|-------:|----------:|
15-
| EmptyApiCallback | 31.519 ns | 38.4672 ns | 2.1085 ns | 0.0331 | - | 208 B |
16-
| EmptyApiComponents | 140.512 ns | 14.3041 ns | 0.7841 ns | 0.1428 | 0.0002 | 896 B |
17-
| EmptyApiContact | 16.055 ns | 1.3280 ns | 0.0728 ns | 0.0204 | - | 128 B |
18-
| EmptyApiDiscriminator | 15.220 ns | 4.7792 ns | 0.2620 ns | 0.0179 | - | 112 B |
19-
| EmptyDocument | 29.049 ns | 3.8422 ns | 0.2106 ns | 0.0433 | - | 272 B |
20-
| EmptyApiEncoding | 33.103 ns | 57.7474 ns | 3.1653 ns | 0.0344 | - | 216 B |
21-
| EmptyApiExample | 16.734 ns | 3.4981 ns | 0.1917 ns | 0.0242 | - | 152 B |
22-
| EmptyApiExternalDocs | 16.954 ns | 1.2380 ns | 0.0679 ns | 0.0191 | - | 120 B |
23-
| EmptyApiHeader | 43.507 ns | 2.5086 ns | 0.1375 ns | 0.0523 | - | 328 B |
24-
| EmptyApiInfo | 16.481 ns | 0.3538 ns | 0.0194 ns | 0.0242 | - | 152 B |
25-
| EmptyApiLicense | 17.546 ns | 3.3792 ns | 0.1852 ns | 0.0191 | - | 120 B |
26-
| EmptyApiLink | 31.159 ns | 2.9456 ns | 0.1615 ns | 0.0395 | - | 248 B |
27-
| EmptyApiMediaType | 48.673 ns | 40.1509 ns | 2.2008 ns | 0.0471 | - | 296 B |
28-
| EmptyApiOAuthFlow | 31.660 ns | 6.6152 ns | 0.3626 ns | 0.0344 | - | 216 B |
29-
| EmptyApiOAuthFlows | 16.520 ns | 8.7989 ns | 0.4823 ns | 0.0217 | - | 136 B |
30-
| EmptyApiOperation | 74.102 ns | 5.9538 ns | 0.3263 ns | 0.0930 | - | 584 B |
31-
| EmptyApiParameter | 44.586 ns | 25.6169 ns | 1.4041 ns | 0.0548 | - | 344 B |
32-
| EmptyApiPathItem | 32.387 ns | 15.2578 ns | 0.8363 ns | 0.0485 | - | 304 B |
33-
| EmptyApiPaths | 34.939 ns | 23.7764 ns | 1.3033 ns | 0.0268 | - | 168 B |
34-
| EmptyApiRequestBody | 33.944 ns | 16.6503 ns | 0.9127 ns | 0.0344 | - | 216 B |
35-
| EmptyApiResponse | 59.113 ns | 32.6796 ns | 1.7913 ns | 0.0625 | - | 392 B |
36-
| EmptyApiResponses | 27.691 ns | 4.1005 ns | 0.2248 ns | 0.0268 | - | 168 B |
37-
| EmptyApiSchema | 67.181 ns | 76.4118 ns | 4.1884 ns | 0.1109 | 0.0002 | 696 B |
38-
| EmptyApiSecurityRequirement | 8.867 ns | 7.3926 ns | 0.4052 ns | 0.0166 | - | 104 B |
39-
| EmptyApiSecurityScheme | 18.258 ns | 7.2938 ns | 0.3998 ns | 0.0280 | - | 176 B |
40-
| EmptyApiServer | 30.928 ns | 6.3259 ns | 0.3467 ns | 0.0331 | - | 208 B |
41-
| EmptyApiServerVariable | 17.401 ns | 1.4698 ns | 0.0806 ns | 0.0204 | - | 128 B |
42-
| EmptyApiTag | 17.470 ns | 17.4659 ns | 0.9574 ns | 0.0229 | - | 144 B |
13+
| Method | Mean | Error | StdDev | Gen0 | Allocated |
14+
|---------------------------- |----------:|-----------:|----------:|-------:|----------:|
15+
| EmptyApiCallback | 49.40 ns | 104.721 ns | 5.740 ns | 0.0124 | 208 B |
16+
| EmptyApiComponents | 302.23 ns | 903.447 ns | 49.521 ns | 0.0534 | 896 B |
17+
| EmptyApiContact | 26.61 ns | 15.989 ns | 0.876 ns | 0.0076 | 128 B |
18+
| EmptyApiDiscriminator | 28.03 ns | 11.415 ns | 0.626 ns | 0.0067 | 112 B |
19+
| EmptyDocument | 50.32 ns | 43.092 ns | 2.362 ns | 0.0162 | 272 B |
20+
| EmptyApiEncoding | 50.27 ns | 28.520 ns | 1.563 ns | 0.0129 | 216 B |
21+
| EmptyApiExample | 26.33 ns | 7.773 ns | 0.426 ns | 0.0091 | 152 B |
22+
| EmptyApiExternalDocs | 27.36 ns | 23.617 ns | 1.295 ns | 0.0072 | 120 B |
23+
| EmptyApiHeader | 73.84 ns | 78.669 ns | 4.312 ns | 0.0196 | 328 B |
24+
| EmptyApiInfo | 29.99 ns | 91.424 ns | 5.011 ns | 0.0091 | 152 B |
25+
| EmptyApiLicense | 32.02 ns | 63.269 ns | 3.468 ns | 0.0072 | 120 B |
26+
| EmptyApiLink | 59.86 ns | 122.819 ns | 6.732 ns | 0.0148 | 248 B |
27+
| EmptyApiMediaType | 77.93 ns | 145.131 ns | 7.955 ns | 0.0176 | 296 B |
28+
| EmptyApiOAuthFlow | 53.89 ns | 70.496 ns | 3.864 ns | 0.0129 | 216 B |
29+
| EmptyApiOAuthFlows | 47.32 ns | 5.775 ns | 0.317 ns | 0.0081 | 136 B |
30+
| EmptyApiOperation | 185.84 ns | 621.224 ns | 34.051 ns | 0.0348 | 584 B |
31+
| EmptyApiParameter | 79.19 ns | 78.560 ns | 4.306 ns | 0.0205 | 344 B |
32+
| EmptyApiPathItem | 58.45 ns | 72.595 ns | 3.979 ns | 0.0181 | 304 B |
33+
| EmptyApiPaths | 45.18 ns | 60.829 ns | 3.334 ns | 0.0100 | 168 B |
34+
| EmptyApiRequestBody | 49.70 ns | 30.429 ns | 1.668 ns | 0.0129 | 216 B |
35+
| EmptyApiResponse | 93.13 ns | 46.379 ns | 2.542 ns | 0.0234 | 392 B |
36+
| EmptyApiResponses | 43.03 ns | 36.408 ns | 1.996 ns | 0.0100 | 168 B |
37+
| EmptyApiSchema | 104.26 ns | 25.354 ns | 1.390 ns | 0.0416 | 696 B |
38+
| EmptyApiSecurityRequirement | 16.28 ns | 23.985 ns | 1.315 ns | 0.0062 | 104 B |
39+
| EmptyApiSecurityScheme | 31.86 ns | 40.830 ns | 2.238 ns | 0.0105 | 176 B |
40+
| EmptyApiServer | 49.09 ns | 62.291 ns | 3.414 ns | 0.0124 | 208 B |
41+
| EmptyApiServerVariable | 25.27 ns | 8.671 ns | 0.475 ns | 0.0076 | 128 B |
42+
| EmptyApiTag | 27.82 ns | 10.429 ns | 0.572 ns | 0.0086 | 144 B |

0 commit comments

Comments
 (0)