During the #42384 I noticed that the Diagnostics middleware, mainly StatusCodePages middleware, allocated much more than expected
| application |
statuscodepages |
nostatuscodepages+content |
|
| Max Working Set (MB) |
179 |
186 |
+3.74% |
| Max GC Heap Size (MB) |
90 |
94 |
+4.21% |
| Size of committed memory by the GC (MB) |
117 |
119 |
+1.28% |
| Max Number of Gen 0 GCs / sec |
41.00 |
25.00 |
-39.02% |
| Max Number of Gen 1 GCs / sec |
1.00 |
13.00 |
+1,200.00% |
| Max Number of Gen 2 GCs / sec |
0.00 |
1.00 |
+∞% |
| Max Time in GC (%) |
2.00 |
1.00 |
-50.00% |
| Max Gen 0 Size (B) |
3,152,512 |
5,146,600 |
+63.25% |
| Max Gen 1 Size (B) |
9,309,256 |
5,376,536 |
-42.25% |
| Max Gen 2 Size (B) |
1,970,808 |
6,406,424 |
+225.07% |
| Max LOH Size (B) |
411,320 |
411,320 |
0.00% |
| Max POH Size (B) |
3,472,456 |
3,451,856 |
-0.59% |
| Total Allocated Bytes |
96,805,446,920 |
57,737,869,840 |
-40.36% |
| Max GC Heap Fragmentation |
30 |
41 |
+36.47% |
| load |
statuscodepages |
nostatuscodepages+content |
|
| Requests/sec |
1,354,620 |
1,429,729 |
+5.54% |
| Requests |
20,454,730 |
21,588,730 |
+5.54% |
nostatuscodepages+content => endpoints.MapGet("sample", () => Results.Content(new string(' ', 500), statusCode: 415));
new string(' ', 500) is similar to what the StatusCodePages does.
Since this middleware, and other Diagnostics middleware, will become more relevant after the introducing of ProblemDetails Services, we should do some profiling and optimizing of these middleware, including scenarios that produce a ProblemDetails payload.
During the #42384 I noticed that the Diagnostics middleware, mainly
StatusCodePagesmiddleware, allocated much more than expectednostatuscodepages+content =>
endpoints.MapGet("sample", () => Results.Content(new string(' ', 500), statusCode: 415));new string(' ', 500)is similar to what theStatusCodePagesdoes.Since this middleware, and other Diagnostics middleware, will become more relevant after the introducing of
ProblemDetailsServices, we should do some profiling and optimizing of these middleware, including scenarios that produce aProblemDetailspayload.