Conversation
#nullable enable to UriHelpers
| try | ||
| { | ||
| var resourceUrl = UriHelpers.GetCleanUriPath(data.Path).ToLowerInvariant(); | ||
| var resourceUrl = data.Path is null ? string.Empty : UriHelpers.GetCleanUriPath(data.Path).ToLowerInvariant(); |
There was a problem hiding this comment.
This is technically a change in behaviour, and "" is a poor fallback, but previously it would just throw so open to alternative suggestions 🤷♂️
There was a problem hiding this comment.
Okay so looking at the other implementations we were the only ones who were throwing here and not creating a span. The other implementations all create a span, but then they mainly differ from there in the tag data generated for the inferred span they create.
It looks like both Java/JavaScript would concatenate the the name with the literal null string for the http.url so something like "domainnull"
Go uses an empty string
Python skips it if it is null and won't include the tag
So with this we'd match Go. I'd say that is good enough, the RFC doesn't specify what to do in this case.
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
This comment was marked as duplicate.
This comment was marked as duplicate.
Sorry, something went wrong.
There was a problem hiding this comment.
concatenate the the name with the literal
nullstring for thehttp.urlso something like"domainnull"
that sounds like a bug 😅
or maybe you're misreading the code and that's how they coalesce null values? like path ?? "null" in C#?
There was a problem hiding this comment.
the RFC doesn't specify what to do in this case
we should fix that?
| && absolutePath.StartsWith(virtualPathToRemove, StringComparison.OrdinalIgnoreCase) | ||
| && absolutePath.Length > virtualPathToRemove.Length | ||
| && absolutePath[virtualPathToRemove.Length] == '/'; | ||
| var prefixLength = !StringUtil.IsNullOrEmpty(virtualPathToRemove) |
There was a problem hiding this comment.
The switch from hasPrefix to prefixLength here is because otherwise the compiler couldn't subsequently reason about the fact that hasPrefix==true implies virtualPathToRemove != null. Doing it in one here resolves the issue without needing !
BenchmarksBenchmark execution time: 2026-02-06 14:17:25 Comparing candidate commit 3a3b307 in PR branch Found 11 performance improvements and 2 performance regressions! Performance is the same for 154 metrics, 25 unstable metrics. scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice netcoreapp3.1
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net472
scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net6.0
scenario:Benchmarks.Trace.ILoggerBenchmark.EnrichedLog net6.0
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net6.0
|
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8166) and master.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 68.30 ± (68.33 - 68.58) ms | 77.11 ± (77.07 - 77.52) ms | +12.9% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 72.05 ± (71.98 - 72.20) ms | 81.98 ± (81.94 - 82.37) ms | +13.8% | ❌⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1025.15 ± (1027.07 - 1033.25) ms | 1098.97 ± (1098.53 - 1104.53) ms | +7.2% | ❌⬆️ |
Full Metrics Comparison
FakeDbCommand
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 68.30 ± (68.33 - 68.58) ms | 77.11 ± (77.07 - 77.52) ms | +12.9% | ❌⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 72.05 ± (71.98 - 72.20) ms | 81.98 ± (81.94 - 82.37) ms | +13.8% | ❌⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1025.15 ± (1027.07 - 1033.25) ms | 1098.97 ± (1098.53 - 1104.53) ms | +7.2% | ❌⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 22.46 ± (22.44 - 22.48) ms | 24.39 ± (24.32 - 24.45) ms | +8.6% | ✅⬆️ |
| process.time_to_main_ms | 86.82 ± (86.67 - 86.96) ms | 99.73 ± (99.48 - 99.98) ms | +14.9% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.51 ± (15.51 - 15.52) MB | 15.51 ± (15.50 - 15.51) MB | -0.0% | ✅ |
| runtime.dotnet.threads.count | 12 ± (12 - 12) | 12 ± (12 - 12) | +0.0% | ✅ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 22.40 ± (22.37 - 22.43) ms | 24.21 ± (24.14 - 24.27) ms | +8.1% | ✅⬆️ |
| process.time_to_main_ms | 87.84 ± (87.73 - 87.95) ms | 101.09 ± (100.84 - 101.34) ms | +15.1% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.55 ± (15.55 - 15.56) MB | 15.56 ± (15.55 - 15.56) MB | +0.0% | ✅⬆️ |
| runtime.dotnet.threads.count | 13 ± (13 - 13) | 13 ± (13 - 13) | +0.0% | ✅ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 255.49 ± (251.86 - 259.12) ms | 286.48 ± (284.22 - 288.74) ms | +12.1% | ✅⬆️ |
| process.time_to_main_ms | 503.66 ± (503.12 - 504.20) ms | 552.50 ± (551.45 - 553.56) ms | +9.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 53.23 ± (53.20 - 53.25) MB | 53.26 ± (53.24 - 53.29) MB | +0.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | -0.0% | ✅ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 21.04 ± (21.01 - 21.06) ms | 22.96 ± (22.90 - 23.03) ms | +9.2% | ✅⬆️ |
| process.time_to_main_ms | 75.06 ± (74.92 - 75.21) ms | 86.90 ± (86.63 - 87.17) ms | +15.8% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.23 ± (15.23 - 15.23) MB | 15.22 ± (15.22 - 15.22) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 20.87 ± (20.84 - 20.90) ms | 22.68 ± (22.62 - 22.75) ms | +8.7% | ✅⬆️ |
| process.time_to_main_ms | 75.77 ± (75.68 - 75.86) ms | 86.93 ± (86.71 - 87.16) ms | +14.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 15.36 ± (15.36 - 15.37) MB | 15.34 ± (15.33 - 15.34) MB | -0.2% | ✅ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 253.80 ± (252.89 - 254.71) ms | 274.33 ± (272.59 - 276.07) ms | +8.1% | ✅⬆️ |
| process.time_to_main_ms | 481.12 ± (480.50 - 481.75) ms | 524.59 ± (523.80 - 525.38) ms | +9.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 53.98 ± (53.95 - 54.01) MB | 53.97 ± (53.95 - 54.00) MB | -0.0% | ✅ |
| runtime.dotnet.threads.count | 28 ± (28 - 28) | 28 ± (28 - 28) | +0.0% | ✅ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 19.24 ± (19.21 - 19.26) ms | 20.96 ± (20.90 - 21.02) ms | +9.0% | ✅⬆️ |
| process.time_to_main_ms | 73.87 ± (73.76 - 73.98) ms | 85.37 ± (85.17 - 85.57) ms | +15.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 12.27 ± (12.27 - 12.28) MB | 12.27 ± (12.26 - 12.27) MB | -0.1% | ✅ |
| runtime.dotnet.threads.count | 10 ± (10 - 10) | 10 ± (10 - 10) | +0.0% | ✅ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 19.20 ± (19.17 - 19.23) ms | 20.89 ± (20.84 - 20.95) ms | +8.8% | ✅⬆️ |
| process.time_to_main_ms | 75.08 ± (75.00 - 75.16) ms | 86.53 ± (86.33 - 86.74) ms | +15.3% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 12.34 ± (12.33 - 12.35) MB | 12.31 ± (12.30 - 12.31) MB | -0.3% | ✅ |
| runtime.dotnet.threads.count | 11 ± (11 - 11) | 11 ± (11 - 11) | +0.0% | ✅ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 181.20 ± (180.26 - 182.14) ms | 201.23 ± (200.24 - 202.22) ms | +11.1% | ✅⬆️ |
| process.time_to_main_ms | 461.65 ± (461.02 - 462.29) ms | 506.63 ± (505.59 - 507.67) ms | +9.7% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 0 ± (0 - 0) | 0 ± (0 - 0) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 41.23 ± (41.20 - 41.25) MB | 41.60 ± (41.55 - 41.65) MB | +0.9% | ✅⬆️ |
| runtime.dotnet.threads.count | 27 ± (27 - 27) | 27 ± (27 - 27) | +0.0% | ✅⬆️ |
HttpMessageHandler
| Metric | Master (Mean ± 95% CI) | Current (Mean ± 95% CI) | Change | Status |
|---|---|---|---|---|
| .NET Framework 4.8 - Baseline | ||||
| duration | 193.79 ± (193.64 - 194.38) ms | 203.14 ± (203.36 - 204.85) ms | +4.8% | ✅⬆️ |
| .NET Framework 4.8 - Bailout | ||||
| duration | 197.11 ± (197.02 - 197.59) ms | 207.01 ± (207.55 - 209.00) ms | +5.0% | ✅⬆️ |
| .NET Framework 4.8 - CallTarget+Inlining+NGEN | ||||
| duration | 1145.42 ± (1145.20 - 1150.97) ms | 1195.38 ± (1197.80 - 1207.20) ms | +4.4% | ✅⬆️ |
| .NET Core 3.1 - Baseline | ||||
| process.internal_duration_ms | 193.39 ± (192.93 - 193.85) ms | 209.17 ± (208.11 - 210.22) ms | +8.2% | ✅⬆️ |
| process.time_to_main_ms | 89.41 ± (89.12 - 89.70) ms | 96.13 ± (95.70 - 96.55) ms | +7.5% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 20.85 ± (20.83 - 20.88) MB | 20.59 ± (20.57 - 20.60) MB | -1.3% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +1.8% | ✅⬆️ |
| .NET Core 3.1 - Bailout | ||||
| process.internal_duration_ms | 191.60 ± (191.32 - 191.88) ms | 206.20 ± (205.28 - 207.12) ms | +7.6% | ✅⬆️ |
| process.time_to_main_ms | 90.28 ± (90.12 - 90.45) ms | 96.24 ± (95.83 - 96.64) ms | +6.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 20.78 ± (20.76 - 20.81) MB | 20.65 ± (20.63 - 20.66) MB | -0.7% | ✅ |
| runtime.dotnet.threads.count | 21 ± (21 - 21) | 21 ± (21 - 21) | +1.0% | ✅⬆️ |
| .NET Core 3.1 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 443.88 ± (441.58 - 446.18) ms | 458.06 ± (455.14 - 460.98) ms | +3.2% | ✅⬆️ |
| process.time_to_main_ms | 509.20 ± (508.55 - 509.84) ms | 537.87 ± (536.83 - 538.91) ms | +5.6% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 3 ± (3 - 3) | 3 ± (3 - 3) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 63.62 ± (63.51 - 63.72) MB | 63.14 ± (62.99 - 63.30) MB | -0.7% | ✅ |
| runtime.dotnet.threads.count | 29 ± (29 - 29) | 29 ± (29 - 30) | +0.2% | ✅⬆️ |
| .NET 6 - Baseline | ||||
| process.internal_duration_ms | 196.37 ± (196.07 - 196.67) ms | 208.79 ± (208.08 - 209.50) ms | +6.3% | ✅⬆️ |
| process.time_to_main_ms | 77.04 ± (76.81 - 77.26) ms | 81.93 ± (81.65 - 82.21) ms | +6.4% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 20.96 ± (20.93 - 20.99) MB | 20.77 ± (20.75 - 20.78) MB | -0.9% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 20 ± (20 - 20) | +1.0% | ✅⬆️ |
| .NET 6 - Bailout | ||||
| process.internal_duration_ms | 195.41 ± (195.11 - 195.70) ms | 207.74 ± (207.14 - 208.33) ms | +6.3% | ✅⬆️ |
| process.time_to_main_ms | 78.00 ± (77.86 - 78.14) ms | 82.66 ± (82.42 - 82.89) ms | +6.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 21.02 ± (20.99 - 21.05) MB | 20.88 ± (20.87 - 20.90) MB | -0.7% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 21) | 21 ± (21 - 21) | +0.6% | ✅⬆️ |
| .NET 6 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 463.92 ± (462.32 - 465.51) ms | 479.90 ± (477.47 - 482.32) ms | +3.4% | ✅⬆️ |
| process.time_to_main_ms | 487.27 ± (486.58 - 487.96) ms | 507.89 ± (506.84 - 508.94) ms | +4.2% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 63.13 ± (63.02 - 63.24) MB | 62.58 ± (62.48 - 62.69) MB | -0.9% | ✅ |
| runtime.dotnet.threads.count | 30 ± (30 - 30) | 30 ± (30 - 30) | +0.5% | ✅⬆️ |
| .NET 8 - Baseline | ||||
| process.internal_duration_ms | 194.33 ± (194.00 - 194.66) ms | 208.13 ± (207.39 - 208.88) ms | +7.1% | ✅⬆️ |
| process.time_to_main_ms | 77.18 ± (76.98 - 77.38) ms | 81.07 ± (80.76 - 81.37) ms | +5.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.32 ± (16.30 - 16.34) MB | 16.18 ± (16.16 - 16.20) MB | -0.9% | ✅ |
| runtime.dotnet.threads.count | 19 ± (19 - 19) | 19 ± (19 - 19) | +1.1% | ✅⬆️ |
| .NET 8 - Bailout | ||||
| process.internal_duration_ms | 193.13 ± (192.82 - 193.45) ms | 209.88 ± (209.13 - 210.64) ms | +8.7% | ✅⬆️ |
| process.time_to_main_ms | 77.91 ± (77.76 - 78.06) ms | 83.35 ± (83.10 - 83.61) ms | +7.0% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 16.42 ± (16.39 - 16.45) MB | 16.29 ± (16.27 - 16.30) MB | -0.8% | ✅ |
| runtime.dotnet.threads.count | 20 ± (20 - 20) | 20 ± (20 - 20) | +1.0% | ✅⬆️ |
| .NET 8 - CallTarget+Inlining+NGEN | ||||
| process.internal_duration_ms | 371.48 ± (370.24 - 372.72) ms | 455.32 ± (447.94 - 462.70) ms | +22.6% | ✅⬆️ |
| process.time_to_main_ms | 468.84 ± (468.24 - 469.44) ms | 493.84 ± (492.88 - 494.80) ms | +5.3% | ✅⬆️ |
| runtime.dotnet.exceptions.count | 4 ± (4 - 4) | 4 ± (4 - 4) | +0.0% | ✅ |
| runtime.dotnet.mem.committed | 52.98 ± (52.94 - 53.01) MB | 55.13 ± (55.10 - 55.17) MB | +4.1% | ✅⬆️ |
| runtime.dotnet.threads.count | 29 ± (29 - 29) | 29 ± (29 - 29) | -0.2% | ✅ |
Comparison explanation
Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:
- Welch test with statistical test for significance of 5%
- Only results indicating a difference greater than 5% and 5 ms are considered.
Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.
Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).
Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (77ms) : 74, 81
master - mean (68ms) : 67, 70
section Bailout
This PR (8166) - mean (82ms) : crit, 79, 85
master - mean (72ms) : 71, 73
section CallTarget+Inlining+NGEN
This PR (8166) - mean (1,102ms) : crit, 1059, 1144
master - mean (1,030ms) : 986, 1074
FakeDbCommand (.NET Core 3.1)
gantt
title Execution time (ms) FakeDbCommand (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (132ms) : 127, 137
master - mean (115ms) : 113, 118
section Bailout
This PR (8166) - mean (133ms) : crit, 129, 137
master - mean (116ms) : 114, 118
section CallTarget+Inlining+NGEN
This PR (8166) - mean (878ms) : crit, 834, 922
master - mean (797ms) : 742, 852
FakeDbCommand (.NET 6)
gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (117ms) : 112, 123
master - mean (101ms) : 99, 104
section Bailout
This PR (8166) - mean (117ms) : crit, 114, 120
master - mean (102ms) : 101, 103
section CallTarget+Inlining+NGEN
This PR (8166) - mean (837ms) : crit, 803, 872
master - mean (776ms) : 755, 797
FakeDbCommand (.NET 8)
gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (115ms) : 112, 119
master - mean (100ms) : 97, 102
section Bailout
This PR (8166) - mean (116ms) : crit, 112, 120
master - mean (101ms) : 99, 102
section CallTarget+Inlining+NGEN
This PR (8166) - mean (752ms) : crit, 728, 776
master - mean (686ms) : 673, 698
HttpMessageHandler (.NET Framework 4.8)
gantt
title Execution time (ms) HttpMessageHandler (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (204ms) : 193, 215
master - mean (194ms) : 190, 198
section Bailout
This PR (8166) - mean (208ms) : 198, 219
master - mean (197ms) : 195, 200
section CallTarget+Inlining+NGEN
This PR (8166) - mean (1,203ms) : 1130, 1275
master - mean (1,148ms) : 1107, 1189
HttpMessageHandler (.NET Core 3.1)
gantt
title Execution time (ms) HttpMessageHandler (.NET Core 3.1)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (318ms) : 292, 344
master - mean (292ms) : 284, 300
section Bailout
This PR (8166) - mean (313ms) : crit, 296, 330
master - mean (291ms) : 287, 295
section CallTarget+Inlining+NGEN
This PR (8166) - mean (1,041ms) : 995, 1086
master - mean (991ms) : 953, 1029
HttpMessageHandler (.NET 6)
gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (302ms) : 289, 315
master - mean (282ms) : 278, 287
section Bailout
This PR (8166) - mean (300ms) : crit, 287, 314
master - mean (282ms) : 279, 286
section CallTarget+Inlining+NGEN
This PR (8166) - mean (1,027ms) : 982, 1072
master - mean (988ms) : 950, 1026
HttpMessageHandler (.NET 8)
gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8166) - mean (301ms) : 285, 316
master - mean (282ms) : 277, 287
section Bailout
This PR (8166) - mean (305ms) : crit, 291, 319
master - mean (281ms) : 277, 286
section CallTarget+Inlining+NGEN
This PR (8166) - mean (990ms) : crit, 879, 1100
master - mean (873ms) : 849, 896
bouwkast
left a comment
There was a problem hiding this comment.
Thanks, just the one comment on the inferred span, but I think what we have with this change is more ideal and there isn't a consistent approach so I think the change in behavior is not important.
Summary of changes
Adds
#nullable enabletoUriHelpersand fix usagesReason for change
I was working with the file, so decided to cleanup
Implementation details
Add
#nullable enable, fix the complaintsTest coverage
I'm assuming already has coverage