Skip to content

Commit 2db224e

Browse files
committed
ci: adds yaml descriptions perf tests to compare
Signed-off-by: Vincent Biret <[email protected]>
1 parent 29dd7d8 commit 2db224e

File tree

7 files changed

+340
-20
lines changed

7 files changed

+340
-20
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ Job=ShortRun IterationCount=3 LaunchCount=1
1010
WarmupCount=3
1111
1212
```
13-
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14-
|--------- |---------------:|--------------:|-------------:|-----------:|-----------:|----------:|-------------:|
15-
| PetStore | 462.3 μs | 31.21 μs | 1.71 μs | 66.4063 | 15.6250 | - | 424.68 KB |
16-
| GHES | 1,138,799.2 μs | 948,023.83 μs | 51,964.39 μs | 77000.0000 | 26000.0000 | 5000.0000 | 446195.81 KB |
13+
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
14+
|------------- |---------------:|--------------:|-------------:|-----------:|-----------:|----------:|-------------:|
15+
| PetStoreYaml | 451.8 μs | 96.73 μs | 5.30 μs | 66.4063 | 15.6250 | - | 424.68 KB |
16+
| PetStoreJson | 192.1 μs | 24.97 μs | 1.37 μs | 45.8984 | 10.7422 | - | 286.81 KB |
17+
| GHESYaml | 1,079,906.2 μs | 730,182.97 μs | 40,023.79 μs | 76000.0000 | 25000.0000 | 4000.0000 | 446194.88 KB |
18+
| GHESJson | 588,655.6 μs | 195,386.89 μs | 10,709.81 μs | 50000.0000 | 18000.0000 | 3000.0000 | 307664.5 KB |
Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +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-
PetStore,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,462.3 μs,31.21 μs,1.71 μs,66.4063,15.6250,0.0000,424.68 KB
3-
GHES,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,138,799.2 μs","948,023.83 μs","51,964.39 μs",77000.0000,26000.0000,5000.0000,446195.81 KB
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,451.8 μs,96.73 μs,5.30 μs,66.4063,15.6250,0.0000,424.68 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,192.1 μs,24.97 μs,1.37 μs,45.8984,10.7422,0.0000,286.81 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,079,906.2 μs","730,182.97 μs","40,023.79 μs",76000.0000,25000.0000,4000.0000,446194.88 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,"588,655.6 μs","195,386.89 μs","10,709.81 μs",50000.0000,18000.0000,3000.0000,307664.5 KB

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

Lines changed: 5 additions & 3 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-095529</title>
5+
<title>performance.Descriptions-20250408-101753</title>
66

77
<style type="text/css">
88
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -26,8 +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>PetStore</td><td>462.3 &mu;s</td><td>31.21 &mu;s</td><td>1.71 &mu;s</td><td>66.4063</td><td>15.6250</td><td>-</td><td>424.68 KB</td>
30-
</tr><tr><td>GHES</td><td>1,138,799.2 &mu;s</td><td>948,023.83 &mu;s</td><td>51,964.39 &mu;s</td><td>77000.0000</td><td>26000.0000</td><td>5000.0000</td><td>446195.81 KB</td>
29+
</thead><tbody><tr><td>PetStoreYaml</td><td>451.8 &mu;s</td><td>96.73 &mu;s</td><td>5.30 &mu;s</td><td>66.4063</td><td>15.6250</td><td>-</td><td>424.68 KB</td>
30+
</tr><tr><td>PetStoreJson</td><td>192.1 &mu;s</td><td>24.97 &mu;s</td><td>1.37 &mu;s</td><td>45.8984</td><td>10.7422</td><td>-</td><td>286.81 KB</td>
31+
</tr><tr><td>GHESYaml</td><td>1,079,906.2 &mu;s</td><td>730,182.97 &mu;s</td><td>40,023.79 &mu;s</td><td>76000.0000</td><td>25000.0000</td><td>4000.0000</td><td>446194.88 KB</td>
32+
</tr><tr><td>GHESJson</td><td>588,655.6 &mu;s</td><td>195,386.89 &mu;s</td><td>10,709.81 &mu;s</td><td>50000.0000</td><td>18000.0000</td><td>3000.0000</td><td>307664.5 KB</td>
3133
</tr></tbody></table>
3234
</body>
3335
</html>

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

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

performance/benchmark/Descriptions.cs

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,24 @@ namespace performance;
1717
public class Descriptions
1818
{
1919
[Benchmark]
20-
public async Task<OpenApiDocument> PetStore()
20+
public async Task<OpenApiDocument> PetStoreYaml()
2121
{
22-
return await ParseDocumentAsync(PetStorePath);
22+
return await ParseDocumentAsync(PetStoreYamlPath);
2323
}
2424
[Benchmark]
25-
public async Task<OpenApiDocument> GHES()
25+
public async Task<OpenApiDocument> PetStoreJson()
2626
{
27-
return await ParseDocumentAsync(GHESDescriptionUrl);
27+
return await ParseDocumentAsync(PetStoreJsonPath, OpenApiConstants.Json);
28+
}
29+
[Benchmark]
30+
public async Task<OpenApiDocument> GHESYaml()
31+
{
32+
return await ParseDocumentAsync(GHESYamlDescriptionUrl);
33+
}
34+
[Benchmark]
35+
public async Task<OpenApiDocument> GHESJson()
36+
{
37+
return await ParseDocumentAsync(GHESJsonDescriptionUrl, OpenApiConstants.Json);
2838
}
2939
private readonly Dictionary<string, MemoryStream> _streams = new(StringComparer.OrdinalIgnoreCase);
3040
[GlobalSetup]
@@ -36,18 +46,23 @@ public async Task GetAllDescriptions()
3646
LeaveStreamOpen = true,
3747
};
3848
readerSettings.AddYamlReader();
39-
await LoadDocumentFromAssemblyIntoStreams(PetStorePath);
40-
await LoadDocumentFromUrlIntoStreams(GHESDescriptionUrl);
49+
await LoadDocumentFromAssemblyIntoStreams(PetStoreYamlPath);
50+
await LoadDocumentFromAssemblyIntoStreams(PetStoreJsonPath);
51+
await LoadDocumentFromUrlIntoStreams(GHESYamlDescriptionUrl);
52+
await LoadDocumentFromUrlIntoStreams(GHESJsonDescriptionUrl);
4153
}
4254
private OpenApiReaderSettings readerSettings;
43-
private const string PetStorePath = @"petStore.yaml";
44-
private const string GHESDescriptionUrl = @"https://raw.githubusercontent.com/github/rest-api-description/aef5e31a2d10fdaab311ec6d18a453021a81383d/descriptions/ghes-3.16/ghes-3.16.2022-11-28.yaml";
45-
private async Task<OpenApiDocument> ParseDocumentAsync(string fileName)
55+
private const string PetStoreYamlPath = @"petStore.yaml";
56+
private const string PetStoreJsonPath = @"petStore.json";
57+
private const string GHESYamlDescriptionUrl = @"https://raw.githubusercontent.com/github/rest-api-description/aef5e31a2d10fdaab311ec6d18a453021a81383d/descriptions/ghes-3.16/ghes-3.16.2022-11-28.yaml";
58+
private const string GHESJsonDescriptionUrl = @"https://raw.githubusercontent.com/github/rest-api-description/aef5e31a2d10fdaab311ec6d18a453021a81383d/descriptions/ghes-3.16/ghes-3.16.2022-11-28.json";
59+
private async Task<OpenApiDocument> ParseDocumentAsync(string fileName, string format = null)
4660
{
61+
format ??= OpenApiConstants.Yaml;
4762
var stream = _streams[fileName];
4863
stream.Seek(0, SeekOrigin.Begin);
4964

50-
var (document, _) = await OpenApiDocument.LoadAsync(stream, OpenApiConstants.Yaml, readerSettings).ConfigureAwait(false);
65+
var (document, _) = await OpenApiDocument.LoadAsync(stream, format, readerSettings).ConfigureAwait(false);
5166
return document;
5267
}
5368
private HttpClient _httpClient;

performance/benchmark/PerformanceTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@
2323
</ItemGroup>
2424
<ItemGroup>
2525
<EmbeddedResource Include="..\..\test\Microsoft.OpenApi.Readers.Tests\V3Tests\Samples\OpenApiDocument\petStore.yaml" />
26+
<EmbeddedResource Include="..\..\test\Microsoft.OpenApi.Readers.Tests\V3Tests\Samples\OpenApiDocument\petStore.json" />
2627
</ItemGroup>
2728
</Project>

0 commit comments

Comments
 (0)