Skip to content

Commit 5c4a5d8

Browse files
committed
perf: Only load node location when needed
1 parent c442e07 commit 5c4a5d8

File tree

6 files changed

+25
-25
lines changed

6 files changed

+25
-25
lines changed

performance/benchmark/BenchmarkDotNet.Artifacts/results/performance.Descriptions-report-github.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ Job=ShortRun IterationCount=3 LaunchCount=1
1010
WarmupCount=3
1111
1212
```
13-
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14-
|------------- |---------------:|--------------:|-------------:|------------:|-----------:|----------:|--------------:|
15-
| PetStoreYaml | 285.1 μs | 467.14 μs | 25.61 μs | 5.8594 | - | - | 361.38 KB |
16-
| PetStoreJson | 110.2 μs | 75.79 μs | 4.15 μs | 4.3945 | 0.9766 | - | 223.52 KB |
17-
| GHESYaml | 687,947.0 μs | 659,775.92 μs | 36,164.54 μs | 9000.0000 | 8000.0000 | 2000.0000 | 345336.55 KB |
18-
| GHESJson | 270,583.7 μs | 134,378.11 μs | 7,365.72 μs | 4000.0000 | 3000.0000 | 1000.0000 | 206858.06 KB |
19-
| GHESNextYaml | 3,443,318.8 μs | 127,519.37 μs | 6,989.77 μs | 160000.0000 | 11000.0000 | 3000.0000 | 7701975.75 KB |
20-
| GHESNextJson | 2,954,715.0 μs | 327,737.12 μs | 17,964.38 μs | 155000.0000 | 19000.0000 | 1000.0000 | 7567167.19 KB |
13+
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14+
|------------- |-------------:|----------------:|-------------:|-----------:|----------:|----------:|-------------:|
15+
| PetStoreYaml | 266.8 μs | 423.33 μs | 23.20 μs | 5.8594 | - | - | 361.38 KB |
16+
| PetStoreJson | 104.9 μs | 38.83 μs | 2.13 μs | 4.3945 | 0.9766 | - | 223.52 KB |
17+
| GHESYaml | 627,326.7 μs | 525,719.23 μs | 28,816.45 μs | 9000.0000 | 8000.0000 | 2000.0000 | 345336.55 KB |
18+
| GHESJson | 256,258.8 μs | 156,676.06 μs | 8,587.94 μs | 4000.0000 | 3000.0000 | 1000.0000 | 206858.38 KB |
19+
| GHESNextYaml | 840,612.7 μs | 1,063,489.38 μs | 58,293.44 μs | 20000.0000 | 9000.0000 | 2000.0000 | 908819.18 KB |
20+
| GHESNextJson | 478,093.3 μs | 98,044.22 μs | 5,374.13 μs | 16000.0000 | 7000.0000 | 1000.0000 | 774015.55 KB |
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
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;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;285.1 μs;467.14 μs;25.61 μs;5.8594;0.0000;0.0000;361.38 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;110.2 μs;75.79 μs;4.15 μs;4.3945;0.9766;0.0000;223.52 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;"687,947.0 μs";"659,775.92 μs";"36,164.54 μs";9000.0000;8000.0000;2000.0000;345336.55 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;"270,583.7 μs";"134,378.11 μs";"7,365.72 μs";4000.0000;3000.0000;1000.0000;206858.06 KB
6-
GHESNextYaml;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,443,318.8 μs";"127,519.37 μs";"6,989.77 μs";160000.0000;11000.0000;3000.0000;7701975.75 KB
7-
GHESNextJson;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,954,715.0 μs";"327,737.12 μs";"17,964.38 μs";155000.0000;19000.0000;1000.0000;7567167.19 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;266.8 μs;423.33 μs;23.20 μs;5.8594;0.0000;0.0000;361.38 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;104.9 μs;38.83 μs;2.13 μs;4.3945;0.9766;0.0000;223.52 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;"627,326.7 μs";"525,719.23 μs";"28,816.45 μs";9000.0000;8000.0000;2000.0000;345336.55 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;"256,258.8 μs";"156,676.06 μs";"8,587.94 μs";4000.0000;3000.0000;1000.0000;206858.38 KB
6+
GHESNextYaml;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;"840,612.7 μs";"1,063,489.38 μs";"58,293.44 μs";20000.0000;9000.0000;2000.0000;908819.18 KB
7+
GHESNextJson;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;"478,093.3 μs";"98,044.22 μs";"5,374.13 μs";16000.0000;7000.0000;1000.0000;774015.55 KB

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

Lines changed: 8 additions & 8 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-20260222-171957</title>
5+
<title>performance.Descriptions-20260222-175619</title>
66

77
<style type="text/css">
88
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -24,14 +24,14 @@
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>285.1 &mu;s</td><td>467.14 &mu;s</td><td>25.61 &mu;s</td><td>5.8594</td><td>-</td><td>-</td><td>361.38 KB</td>
30-
</tr><tr><td>PetStoreJson</td><td>110.2 &mu;s</td><td>75.79 &mu;s</td><td>4.15 &mu;s</td><td>4.3945</td><td>0.9766</td><td>-</td><td>223.52 KB</td>
31-
</tr><tr><td>GHESYaml</td><td>687,947.0 &mu;s</td><td>659,775.92 &mu;s</td><td>36,164.54 &mu;s</td><td>9000.0000</td><td>8000.0000</td><td>2000.0000</td><td>345336.55 KB</td>
32-
</tr><tr><td>GHESJson</td><td>270,583.7 &mu;s</td><td>134,378.11 &mu;s</td><td>7,365.72 &mu;s</td><td>4000.0000</td><td>3000.0000</td><td>1000.0000</td><td>206858.06 KB</td>
33-
</tr><tr><td>GHESNextYaml</td><td>3,443,318.8 &mu;s</td><td>127,519.37 &mu;s</td><td>6,989.77 &mu;s</td><td>160000.0000</td><td>11000.0000</td><td>3000.0000</td><td>7701975.75 KB</td>
34-
</tr><tr><td>GHESNextJson</td><td>2,954,715.0 &mu;s</td><td>327,737.12 &mu;s</td><td>17,964.38 &mu;s</td><td>155000.0000</td><td>19000.0000</td><td>1000.0000</td><td>7567167.19 KB</td>
29+
</thead><tbody><tr><td>PetStoreYaml</td><td>266.8 &mu;s</td><td>423.33 &mu;s</td><td>23.20 &mu;s</td><td>5.8594</td><td>-</td><td>-</td><td>361.38 KB</td>
30+
</tr><tr><td>PetStoreJson</td><td>104.9 &mu;s</td><td>38.83 &mu;s</td><td>2.13 &mu;s</td><td>4.3945</td><td>0.9766</td><td>-</td><td>223.52 KB</td>
31+
</tr><tr><td>GHESYaml</td><td>627,326.7 &mu;s</td><td>525,719.23 &mu;s</td><td>28,816.45 &mu;s</td><td>9000.0000</td><td>8000.0000</td><td>2000.0000</td><td>345336.55 KB</td>
32+
</tr><tr><td>GHESJson</td><td>256,258.8 &mu;s</td><td>156,676.06 &mu;s</td><td>8,587.94 &mu;s</td><td>4000.0000</td><td>3000.0000</td><td>1000.0000</td><td>206858.38 KB</td>
33+
</tr><tr><td>GHESNextYaml</td><td>840,612.7 &mu;s</td><td>1,063,489.38 &mu;s</td><td>58,293.44 &mu;s</td><td>20000.0000</td><td>9000.0000</td><td>2000.0000</td><td>908819.18 KB</td>
34+
</tr><tr><td>GHESNextJson</td><td>478,093.3 &mu;s</td><td>98,044.22 &mu;s</td><td>5,374.13 &mu;s</td><td>16000.0000</td><td>7000.0000</td><td>1000.0000</td><td>774015.55 KB</td>
3535
</tr></tbody></table>
3636
</body>
3737
</html>

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

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/Microsoft.OpenApi/Reader/V31/OpenApiSchemaDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,10 @@ public static IOpenApiSchema LoadSchema(ParseNode node, OpenApiDocument hostDocu
366366

367367
var pointer = mapNode.GetReferencePointer();
368368
var identifier = mapNode.GetJsonSchemaIdentifier();
369-
var nodeLocation = node.Context.GetLocation();
370369

371370
if (pointer != null)
372371
{
372+
var nodeLocation = node.Context.GetLocation();
373373
var reference = GetReferenceIdAndExternalResource(pointer);
374374
var result = new OpenApiSchemaReference(reference.Item1, hostDocument, reference.Item2);
375375
result.Reference.SetMetadataFromMapNode(mapNode);

src/Microsoft.OpenApi/Reader/V32/OpenApiSchemaDeserializer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,10 @@ public static IOpenApiSchema LoadSchema(ParseNode node, OpenApiDocument hostDocu
366366

367367
var pointer = mapNode.GetReferencePointer();
368368
var identifier = mapNode.GetJsonSchemaIdentifier();
369-
var nodeLocation = node.Context.GetLocation();
370369

371370
if (pointer != null)
372371
{
372+
var nodeLocation = node.Context.GetLocation();
373373
var reference = GetReferenceIdAndExternalResource(pointer);
374374
var result = new OpenApiSchemaReference(reference.Item1, hostDocument, reference.Item2);
375375
result.Reference.SetMetadataFromMapNode(mapNode);

0 commit comments

Comments
 (0)