Skip to content

Commit ce6497e

Browse files
Reduce allocations
Avoid closures, creating new arrays, string replace operations that aren't used, and double creation of path keys.
1 parent d715613 commit ce6497e

File tree

6 files changed

+182
-206
lines changed

6 files changed

+182
-206
lines changed

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ WarmupCount=3
1212
```
1313
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
1414
|------------- |-------------:|--------------:|-------------:|-----------:|-----------:|----------:|-------------:|
15-
| PetStoreYaml | 322.6 μs | 251.77 μs | 13.80 μs | 35.1563 | 7.8125 | - | 445.71 KB |
16-
| PetStoreJson | 151.7 μs | 56.10 μs | 3.07 μs | 24.4141 | 5.8594 | - | 307.85 KB |
17-
| GHESYaml | 829,977.0 μs | 127,873.81 μs | 7,009.19 μs | 38000.0000 | 19000.0000 | 4000.0000 | 422174.19 KB |
18-
| GHESJson | 397,127.5 μs | 576,195.19 μs | 31,583.20 μs | 23000.0000 | 12000.0000 | 2000.0000 | 283644.3 KB |
15+
| PetStoreYaml | 311.7 μs | 90.14 μs | 4.94 μs | 35.1563 | 7.8125 | - | 434.34 KB |
16+
| PetStoreJson | 142.7 μs | 28.80 μs | 1.58 μs | 23.4375 | 6.8359 | - | 296.48 KB |
17+
| GHESYaml | 796,230.8 μs | 296,583.76 μs | 16,256.76 μs | 37000.0000 | 19000.0000 | 4000.0000 | 404377.45 KB |
18+
| GHESJson | 359,560.4 μs | 122,198.31 μs | 6,698.10 μs | 22000.0000 | 12000.0000 | 2000.0000 | 265847.63 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,11111111111111111111,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,322.6 μs,251.77 μs,13.80 μs,35.1563,7.8125,0.0000,445.71 KB
3-
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,151.7 μs,56.10 μs,3.07 μs,24.4141,5.8594,0.0000,307.85 KB
4-
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,"829,977.0 μs","127,873.81 μs","7,009.19 μs",38000.0000,19000.0000,4000.0000,422174.19 KB
5-
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,"397,127.5 μs","576,195.19 μs","31,583.20 μs",23000.0000,12000.0000,2000.0000,283644.3 KB
2+
PetStoreYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,311.7 μs,90.14 μs,4.94 μs,35.1563,7.8125,0.0000,434.34 KB
3+
PetStoreJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,142.7 μs,28.80 μs,1.58 μs,23.4375,6.8359,0.0000,296.48 KB
4+
GHESYaml,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,"796,230.8 μs","296,583.76 μs","16,256.76 μs",37000.0000,19000.0000,4000.0000,404377.45 KB
5+
GHESJson,ShortRun,False,Default,Default,Default,Default,Default,Default,11111111111111111111,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,"359,560.4 μs","122,198.31 μs","6,698.10 μs",22000.0000,12000.0000,2000.0000,265847.63 KB

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

Lines changed: 5 additions & 5 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-20250819-171911</title>
5+
<title>performance.Descriptions-20250819-194138</title>
66

77
<style type="text/css">
88
table { border-collapse: collapse; display: block; width: 100%; overflow: auto; }
@@ -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>322.6 &mu;s</td><td>251.77 &mu;s</td><td>13.80 &mu;s</td><td>35.1563</td><td>7.8125</td><td>-</td><td>445.71 KB</td>
30-
</tr><tr><td>PetStoreJson</td><td>151.7 &mu;s</td><td>56.10 &mu;s</td><td>3.07 &mu;s</td><td>24.4141</td><td>5.8594</td><td>-</td><td>307.85 KB</td>
31-
</tr><tr><td>GHESYaml</td><td>829,977.0 &mu;s</td><td>127,873.81 &mu;s</td><td>7,009.19 &mu;s</td><td>38000.0000</td><td>19000.0000</td><td>4000.0000</td><td>422174.19 KB</td>
32-
</tr><tr><td>GHESJson</td><td>397,127.5 &mu;s</td><td>576,195.19 &mu;s</td><td>31,583.20 &mu;s</td><td>23000.0000</td><td>12000.0000</td><td>2000.0000</td><td>283644.3 KB</td>
29+
</thead><tbody><tr><td>PetStoreYaml</td><td>311.7 &mu;s</td><td>90.14 &mu;s</td><td>4.94 &mu;s</td><td>35.1563</td><td>7.8125</td><td>-</td><td>434.34 KB</td>
30+
</tr><tr><td>PetStoreJson</td><td>142.7 &mu;s</td><td>28.80 &mu;s</td><td>1.58 &mu;s</td><td>23.4375</td><td>6.8359</td><td>-</td><td>296.48 KB</td>
31+
</tr><tr><td>GHESYaml</td><td>796,230.8 &mu;s</td><td>296,583.76 &mu;s</td><td>16,256.76 &mu;s</td><td>37000.0000</td><td>19000.0000</td><td>4000.0000</td><td>404377.45 KB</td>
32+
</tr><tr><td>GHESJson</td><td>359,560.4 &mu;s</td><td>122,198.31 &mu;s</td><td>6,698.10 &mu;s</td><td>22000.0000</td><td>12000.0000</td><td>2000.0000</td><td>265847.63 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.

performance/benchmark/Program.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
1+
using System.Threading.Tasks;
12
using BenchmarkDotNet.Configs;
23
using BenchmarkDotNet.Running;
34

45
namespace performance;
56
public class Program
67
{
7-
public static void Main(string[] args)
8+
public static async Task Main(string[] args)
89
{
10+
#if DEBUG
11+
var descriptions = new Descriptions();
12+
13+
await descriptions.GetAllDescriptions();
14+
await descriptions.PetStoreYaml();
15+
await descriptions.PetStoreJson();
16+
await descriptions.GHESYaml();
17+
await descriptions.GHESJson();
18+
#else
919
var config = DefaultConfig.Instance;
1020
BenchmarkRunner.Run<Descriptions>(config, args);
11-
BenchmarkRunner.Run<EmptyModels>(config, args);
21+
////BenchmarkRunner.Run<EmptyModels>(config, args);
22+
#endif
23+
24+
await Task.CompletedTask;
1225
}
1326
}

0 commit comments

Comments
 (0)