-
Notifications
You must be signed in to change notification settings - Fork 150
Nit: cache is ready state for profiler in ProfilerStatus #7873
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (7873) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-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:
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 chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7873) - mean (75ms) : 71, 80
master - mean (75ms) : 70, 80
section Bailout
This PR (7873) - mean (81ms) : 73, 88
master - mean (80ms) : 76, 85
section CallTarget+Inlining+NGEN
This PR (7873) - mean (1,063ms) : 1005, 1122
master - mean (1,079ms) : 1004, 1155
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 (7873) - mean (119ms) : 110, 128
master - mean (120ms) : 112, 127
section Bailout
This PR (7873) - mean (120ms) : 114, 127
master - mean (123ms) : 115, 131
section CallTarget+Inlining+NGEN
This PR (7873) - mean (756ms) : 716, 795
master - mean (764ms) : 731, 796
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7873) - mean (103ms) : 96, 111
master - mean (106ms) : 100, 112
section Bailout
This PR (7873) - mean (105ms) : 97, 112
master - mean (108ms) : 102, 114
section CallTarget+Inlining+NGEN
This PR (7873) - mean (710ms) : 675, 745
master - mean (721ms) : 694, 747
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7873) - mean (103ms) : 97, 109
master - mean (105ms) : 99, 112
section Bailout
This PR (7873) - mean (104ms) : 98, 109
master - mean (106ms) : 100, 112
section CallTarget+Inlining+NGEN
This PR (7873) - mean (690ms) : 660, 720
master - mean (696ms) : 667, 725
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 (7873) - mean (194ms) : 189, 199
master - mean (193ms) : 189, 197
section Bailout
This PR (7873) - mean (197ms) : 194, 201
master - mean (196ms) : 194, 199
section CallTarget+Inlining+NGEN
This PR (7873) - mean (1,117ms) : 1060, 1174
master - mean (1,117ms) : 1052, 1183
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 (7873) - mean (278ms) : 272, 284
master - mean (278ms) : 271, 284
section Bailout
This PR (7873) - mean (281ms) : 275, 286
master - mean (278ms) : 274, 282
section CallTarget+Inlining+NGEN
This PR (7873) - mean (912ms) : 866, 958
master - mean (914ms) : 849, 978
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7873) - mean (271ms) : 266, 275
master - mean (313ms) : 265, 361
section Bailout
This PR (7873) - mean (270ms) : 266, 275
master - mean (271ms) : 264, 278
section CallTarget+Inlining+NGEN
This PR (7873) - mean (884ms) : 849, 920
master - mean (878ms) : 843, 913
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (7873) - mean (272ms) : 264, 280
master - mean (270ms) : 265, 275
section Bailout
This PR (7873) - mean (272ms) : 266, 277
master - mean (270ms) : 266, 274
section CallTarget+Inlining+NGEN
This PR (7873) - mean (827ms) : 812, 842
master - mean (824ms) : 807, 842
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmarks Report for benchmark platform 🐌Benchmarks for #7873 compared to master:
The following thresholds were used for comparing the benchmark speeds:
Allocation changes below 0.5% are ignored. Benchmark detailsBenchmarks.Trace.ActivityBenchmark - Same speed ✔️ Fewer allocations 🎉
|
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 | 6.09 KB | 6.06 KB | -32 B | -0.53% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | StartStopWithChild |
net6.0 | 10.9μs | 57.2ns | 297ns | 0 | 0 | 0 | 5.53 KB |
| master | StartStopWithChild |
netcoreapp3.1 | 13.5μs | 34.9ns | 126ns | 0 | 0 | 0 | 5.68 KB |
| master | StartStopWithChild |
net472 | 21.6μs | 118ns | 710ns | 0.888 | 0.222 | 0 | 6.09 KB |
| #7873 | StartStopWithChild |
net6.0 | 10.7μs | 57.4ns | 315ns | 0 | 0 | 0 | 5.51 KB |
| #7873 | StartStopWithChild |
netcoreapp3.1 | 13.8μs | 74.1ns | 378ns | 0 | 0 | 0 | 5.7 KB |
| #7873 | StartStopWithChild |
net472 | 21.9μs | 120ns | 721ns | 0.992 | 0.331 | 0.11 | 6.06 KB |
Benchmarks.Trace.AgentWriterBenchmark - Unknown 🤷 Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | WriteAndFlushEnrichedTraces |
net6.0 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
| master | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
| master | WriteAndFlushEnrichedTraces |
net472 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
| #7873 | WriteAndFlushEnrichedTraces |
net6.0 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
| #7873 | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
| #7873 | WriteAndFlushEnrichedTraces |
net472 | N/A | N/A | N/A | NaN | NaN | NaN | 0 b |
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | AllCycleSimpleBody |
net6.0 | 1.07μs | 0.68ns | 2.54ns | 0 | 0 | 0 | 1.22 KB |
| master | AllCycleSimpleBody |
netcoreapp3.1 | 1.38μs | 7.81ns | 55.8ns | 0 | 0 | 0 | 1.2 KB |
| master | AllCycleSimpleBody |
net472 | 1.07μs | 0.45ns | 1.69ns | 0.192 | 0 | 0 | 1.23 KB |
| master | AllCycleMoreComplexBody |
net6.0 | 7.27μs | 8.12ns | 30.4ns | 0 | 0 | 0 | 4.72 KB |
| master | AllCycleMoreComplexBody |
netcoreapp3.1 | 8.76μs | 46.1ns | 226ns | 0 | 0 | 0 | 4.62 KB |
| master | AllCycleMoreComplexBody |
net472 | 7.56μs | 5.77ns | 22.4ns | 0.717 | 0 | 0 | 4.74 KB |
| master | ObjectExtractorSimpleBody |
net6.0 | 320ns | 1.82ns | 12.1ns | 0 | 0 | 0 | 280 B |
| master | ObjectExtractorSimpleBody |
netcoreapp3.1 | 393ns | 2.1ns | 10.7ns | 0 | 0 | 0 | 272 B |
| master | ObjectExtractorSimpleBody |
net472 | 299ns | 0.218ns | 0.815ns | 0.0443 | 0 | 0 | 281 B |
| master | ObjectExtractorMoreComplexBody |
net6.0 | 6.36μs | 29.6ns | 119ns | 0 | 0 | 0 | 3.78 KB |
| master | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 7.78μs | 34ns | 132ns | 0 | 0 | 0 | 3.69 KB |
| master | ObjectExtractorMoreComplexBody |
net472 | 6.67μs | 1.84ns | 7.11ns | 0.6 | 0 | 0 | 3.8 KB |
| #7873 | AllCycleSimpleBody |
net6.0 | 1.06μs | 5.66ns | 30.5ns | 0 | 0 | 0 | 1.22 KB |
| #7873 | AllCycleSimpleBody |
netcoreapp3.1 | 1.42μs | 7.87ns | 50.4ns | 0 | 0 | 0 | 1.2 KB |
| #7873 | AllCycleSimpleBody |
net472 | 1.03μs | 0.156ns | 0.562ns | 0.19 | 0 | 0 | 1.23 KB |
| #7873 | AllCycleMoreComplexBody |
net6.0 | 7.08μs | 36.5ns | 175ns | 0 | 0 | 0 | 4.72 KB |
| #7873 | AllCycleMoreComplexBody |
netcoreapp3.1 | 8.92μs | 46.8ns | 229ns | 0 | 0 | 0 | 4.62 KB |
| #7873 | AllCycleMoreComplexBody |
net472 | 7.57μs | 3.62ns | 14ns | 0.718 | 0 | 0 | 4.74 KB |
| #7873 | ObjectExtractorSimpleBody |
net6.0 | 328ns | 1.5ns | 5.81ns | 0 | 0 | 0 | 280 B |
| #7873 | ObjectExtractorSimpleBody |
netcoreapp3.1 | 396ns | 2.07ns | 9.26ns | 0 | 0 | 0 | 272 B |
| #7873 | ObjectExtractorSimpleBody |
net472 | 301ns | 0.424ns | 1.53ns | 0.0438 | 0 | 0 | 281 B |
| #7873 | ObjectExtractorMoreComplexBody |
net6.0 | 6.29μs | 28ns | 108ns | 0 | 0 | 0 | 3.78 KB |
| #7873 | ObjectExtractorMoreComplexBody |
netcoreapp3.1 | 7.86μs | 33.3ns | 129ns | 0 | 0 | 0 | 3.69 KB |
| #7873 | ObjectExtractorMoreComplexBody |
net472 | 6.66μs | 2.66ns | 9.96ns | 0.6 | 0 | 0 | 3.8 KB |
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | EncodeArgs |
net6.0 | 79.3μs | 345ns | 1.29μs | 0 | 0 | 0 | 32.4 KB |
| master | EncodeArgs |
netcoreapp3.1 | 97.5μs | 273ns | 1.06μs | 0 | 0 | 0 | 32.4 KB |
| master | EncodeArgs |
net472 | 110μs | 28.3ns | 110ns | 4.97 | 0 | 0 | 32.51 KB |
| master | EncodeLegacyArgs |
net6.0 | 149μs | 17.2ns | 64.5ns | 0 | 0 | 0 | 2.15 KB |
| master | EncodeLegacyArgs |
netcoreapp3.1 | 198μs | 449ns | 1.74μs | 0 | 0 | 0 | 2.14 KB |
| master | EncodeLegacyArgs |
net472 | 262μs | 46ns | 178ns | 0 | 0 | 0 | 2.16 KB |
| #7873 | EncodeArgs |
net6.0 | 76.7μs | 111ns | 430ns | 0 | 0 | 0 | 32.4 KB |
| #7873 | EncodeArgs |
netcoreapp3.1 | 95.7μs | 297ns | 1.15μs | 0 | 0 | 0 | 32.4 KB |
| #7873 | EncodeArgs |
net472 | 111μs | 15.5ns | 58.2ns | 4.99 | 0 | 0 | 32.51 KB |
| #7873 | EncodeLegacyArgs |
net6.0 | 144μs | 19.3ns | 72.2ns | 0 | 0 | 0 | 2.15 KB |
| #7873 | EncodeLegacyArgs |
netcoreapp3.1 | 198μs | 26.3ns | 102ns | 0 | 0 | 0 | 2.15 KB |
| #7873 | EncodeLegacyArgs |
net472 | 262μs | 31.6ns | 109ns | 0 | 0 | 0 | 2.16 KB |
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ More allocations ⚠️
More allocations ⚠️ in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑net472
0 b
8.19 KB
8.19 KB
∞
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑net472
0 b
8.19 KB
8.19 KB
∞
Fewer allocations 🎉 in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑net6.0
5.48 KB
5.14 KB
-336 B
-6.13%
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑net472 | 0 b | 8.19 KB | 8.19 KB | ∞ |
| Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑net472 | 0 b | 8.19 KB | 8.19 KB | ∞ |
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑net6.0 | 5.48 KB | 5.14 KB | -336 B | -6.13% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | RunWafRealisticBenchmark |
net6.0 | 430μs | 1.21μs | 4.35μs | 0 | 0 | 0 | 5.48 KB |
| master | RunWafRealisticBenchmark |
netcoreapp3.1 | 527μs | 11.5μs | 107μs | 0 | 0 | 0 | 4.58 KB |
| master | RunWafRealisticBenchmark |
net472 | 501μs | 603ns | 2.26μs | 0 | 0 | 0 | 0 b |
| master | RunWafRealisticBenchmarkWithAttack |
net6.0 | 318μs | 794ns | 2.75μs | 0 | 0 | 0 | 3.17 KB |
| master | RunWafRealisticBenchmarkWithAttack |
netcoreapp3.1 | 377μs | 3.98μs | 38.6μs | 0 | 0 | 0 | 2.32 KB |
| master | RunWafRealisticBenchmarkWithAttack |
net472 | 371μs | 192ns | 691ns | 0 | 0 | 0 | 0 b |
| #7873 | RunWafRealisticBenchmark |
net6.0 | 429μs | 954ns | 3.44μs | 0 | 0 | 0 | 5.14 KB |
| #7873 | RunWafRealisticBenchmark |
netcoreapp3.1 | 472μs | 2.68μs | 22.4μs | 0 | 0 | 0 | 4.58 KB |
| #7873 | RunWafRealisticBenchmark |
net472 | 504μs | 438ns | 1.58μs | 0 | 0 | 0 | 8.19 KB |
| #7873 | RunWafRealisticBenchmarkWithAttack |
net6.0 | 317μs | 872ns | 3.26μs | 0 | 0 | 0 | 3.17 KB |
| #7873 | RunWafRealisticBenchmarkWithAttack |
netcoreapp3.1 | 334μs | 1.19μs | 4.29μs | 0 | 0 | 0 | 2.32 KB |
| #7873 | RunWafRealisticBenchmarkWithAttack |
net472 | 375μs | 524ns | 1.89μs | 0 | 0 | 0 | 8.19 KB |
Benchmarks.Trace.AspNetCoreBenchmark - Faster 🎉 Same allocations ✔️
Faster 🎉 in #7873
Benchmark
base/diff
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.AspNetCoreBenchmark.SendRequest‑net6.0
1.253
76,894.58
61,386.43
| Benchmark | base/diff | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.AspNetCoreBenchmark.SendRequest‑net6.0 | 1.253 | 76,894.58 | 61,386.43 |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | SendRequest |
net6.0 | 77.4μs | 242ns | 939ns | 0 | 0 | 0 | 14.52 KB |
| master | SendRequest |
netcoreapp3.1 | 71.5μs | 376ns | 1.84μs | 0 | 0 | 0 | 17.42 KB |
| master | SendRequest |
net472 | 0.00167ns | 0.00105ns | 0.00408ns | 0 | 0 | 0 | 0 b |
| #7873 | SendRequest |
net6.0 | 61.4μs | 48.3ns | 181ns | 0 | 0 | 0 | 14.52 KB |
| #7873 | SendRequest |
netcoreapp3.1 | 71.2μs | 248ns | 1.14μs | 0 | 0 | 0 | 17.42 KB |
| #7873 | SendRequest |
net472 | 0.166ns | 0.00363ns | 0.0141ns | 0 | 0 | 0 | 0 b |
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️
More allocations ⚠️ in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472
0 b
8.19 KB
8.19 KB
∞
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472
0 b
8.19 KB
8.19 KB
∞
Fewer allocations 🎉 in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0
352 B
304 B
-48 B
-13.64%
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 | 0 b | 8.19 KB | 8.19 KB | ∞ |
| Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 | 0 b | 8.19 KB | 8.19 KB | ∞ |
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 | 352 B | 304 B | -48 B | -13.64% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | OriginalCharSlice |
net6.0 | 2.01ms | 580ns | 2.09μs | 0 | 0 | 0 | 640.3 KB |
| master | OriginalCharSlice |
netcoreapp3.1 | 3.92ms | 1.18μs | 4.58μs | 0 | 0 | 0 | 640.1 KB |
| master | OriginalCharSlice |
net472 | 2.67ms | 1.12μs | 4.05μs | 0 | 0 | 0 | 647.17 KB |
| master | OptimizedCharSlice |
net6.0 | 1.56ms | 1.06μs | 3.97μs | 0 | 0 | 0 | 352 B |
| master | OptimizedCharSlice |
netcoreapp3.1 | 2.76ms | 661ns | 2.47μs | 0 | 0 | 0 | 104 B |
| master | OptimizedCharSlice |
net472 | 2.04ms | 1.65μs | 6.38μs | 0 | 0 | 0 | 0 b |
| master | OptimizedCharSliceWithPool |
net6.0 | 1.16ms | 1.1μs | 4.11μs | 0 | 0 | 0 | 640 B |
| master | OptimizedCharSliceWithPool |
netcoreapp3.1 | 1.91ms | 1.38μs | 5.36μs | 0 | 0 | 0 | 104 B |
| master | OptimizedCharSliceWithPool |
net472 | 1.13ms | 739ns | 2.86μs | 0 | 0 | 0 | 0 b |
| #7873 | OriginalCharSlice |
net6.0 | 1.97ms | 2.16μs | 8.38μs | 0 | 0 | 0 | 640.98 KB |
| #7873 | OriginalCharSlice |
netcoreapp3.1 | 3.93ms | 1.37μs | 5.12μs | 0 | 0 | 0 | 640.1 KB |
| #7873 | OriginalCharSlice |
net472 | 2.64ms | 835ns | 3.23μs | 0 | 0 | 0 | 647.17 KB |
| #7873 | OptimizedCharSlice |
net6.0 | 1.49ms | 2.2μs | 8.51μs | 0 | 0 | 0 | 304 B |
| #7873 | OptimizedCharSlice |
netcoreapp3.1 | 2.77ms | 809ns | 3.13μs | 0 | 0 | 0 | 104 B |
| #7873 | OptimizedCharSlice |
net472 | 2.03ms | 1.1μs | 4.25μs | 0 | 0 | 0 | 8.19 KB |
| #7873 | OptimizedCharSliceWithPool |
net6.0 | 1.06ms | 963ns | 3.73μs | 0 | 0 | 0 | 640 B |
| #7873 | OptimizedCharSliceWithPool |
netcoreapp3.1 | 1.9ms | 2.56μs | 9.92μs | 0 | 0 | 0 | 104 B |
| #7873 | OptimizedCharSliceWithPool |
net472 | 1.15ms | 612ns | 2.37μs | 0 | 0 | 0 | 8.19 KB |
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower ⚠️ More allocations ⚠️
Slower ⚠️ in #7873
Benchmark
diff/base
Base Median (ns)
Diff Median (ns)
Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472
1.128
862,910.27
973,746.25
More allocations ⚠️ in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1
41.94 KB
43.05 KB
1.12 KB
2.67%
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472
55.63 KB
56.29 KB
658 B
1.18%
Fewer allocations 🎉 in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0
41.83 KB
41.55 KB
-274 B
-0.66%
| Benchmark | diff/base | Base Median (ns) | Diff Median (ns) | Modality |
|---|---|---|---|---|
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 | 1.128 | 862,910.27 | 973,746.25 |
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 | 41.94 KB | 43.05 KB | 1.12 KB | 2.67% |
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 | 55.63 KB | 56.29 KB | 658 B | 1.18% |
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 | 41.83 KB | 41.55 KB | -274 B | -0.66% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | WriteAndFlushEnrichedTraces |
net6.0 | 771μs | 3.65μs | 14.1μs | 0 | 0 | 0 | 41.83 KB |
| master | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 685μs | 1.01μs | 3.77μs | 0 | 0 | 0 | 41.94 KB |
| master | WriteAndFlushEnrichedTraces |
net472 | 867μs | 4.4μs | 21.6μs | 4.46 | 0 | 0 | 55.63 KB |
| #7873 | WriteAndFlushEnrichedTraces |
net6.0 | 691μs | 3.63μs | 18.9μs | 0 | 0 | 0 | 41.55 KB |
| #7873 | WriteAndFlushEnrichedTraces |
netcoreapp3.1 | 758μs | 2.47μs | 8.92μs | 0 | 0 | 0 | 43.05 KB |
| #7873 | WriteAndFlushEnrichedTraces |
net472 | 981μs | 4.64μs | 19.7μs | 8.33 | 0 | 0 | 56.29 KB |
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | ExecuteNonQuery |
net6.0 | 1.86μs | 6.69ns | 25ns | 0 | 0 | 0 | 1.02 KB |
| master | ExecuteNonQuery |
netcoreapp3.1 | 2.58μs | 13ns | 59.7ns | 0 | 0 | 0 | 1.02 KB |
| master | ExecuteNonQuery |
net472 | 2.79μs | 6.36ns | 24.6ns | 0.154 | 0 | 0 | 987 B |
| #7873 | ExecuteNonQuery |
net6.0 | 1.88μs | 2.61ns | 10.1ns | 0 | 0 | 0 | 1.02 KB |
| #7873 | ExecuteNonQuery |
netcoreapp3.1 | 2.59μs | 9.85ns | 36.9ns | 0 | 0 | 0 | 1.02 KB |
| #7873 | ExecuteNonQuery |
net472 | 2.69μs | 1.98ns | 7.66ns | 0.15 | 0 | 0 | 987 B |
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | CallElasticsearch |
net6.0 | 1.77μs | 2.66ns | 10.3ns | 0 | 0 | 0 | 1.03 KB |
| master | CallElasticsearch |
netcoreapp3.1 | 2.32μs | 7.37ns | 28.5ns | 0 | 0 | 0 | 1.03 KB |
| master | CallElasticsearch |
net472 | 3.49μs | 7.93ns | 30.7ns | 0.159 | 0 | 0 | 1.04 KB |
| master | CallElasticsearchAsync |
net6.0 | 1.8μs | 9.28ns | 41.5ns | 0 | 0 | 0 | 1.01 KB |
| master | CallElasticsearchAsync |
netcoreapp3.1 | 2.38μs | 11.4ns | 48.5ns | 0 | 0 | 0 | 1.08 KB |
| master | CallElasticsearchAsync |
net472 | 3.73μs | 5.03ns | 19.5ns | 0.166 | 0 | 0 | 1.1 KB |
| #7873 | CallElasticsearch |
net6.0 | 1.82μs | 9.16ns | 41ns | 0 | 0 | 0 | 1.03 KB |
| #7873 | CallElasticsearch |
netcoreapp3.1 | 2.4μs | 7.53ns | 29.2ns | 0 | 0 | 0 | 1.03 KB |
| #7873 | CallElasticsearch |
net472 | 3.46μs | 1.55ns | 5.99ns | 0.156 | 0 | 0 | 1.04 KB |
| #7873 | CallElasticsearchAsync |
net6.0 | 1.83μs | 8.55ns | 35.2ns | 0 | 0 | 0 | 1.01 KB |
| #7873 | CallElasticsearchAsync |
netcoreapp3.1 | 2.44μs | 10.3ns | 39.9ns | 0 | 0 | 0 | 1.08 KB |
| #7873 | CallElasticsearchAsync |
net472 | 3.63μs | 2.08ns | 8.07ns | 0.166 | 0 | 0 | 1.1 KB |
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | ExecuteAsync |
net6.0 | 1.94μs | 4.71ns | 18.3ns | 0 | 0 | 0 | 952 B |
| master | ExecuteAsync |
netcoreapp3.1 | 2.45μs | 11.9ns | 49.1ns | 0 | 0 | 0 | 952 B |
| master | ExecuteAsync |
net472 | 2.61μs | 5.42ns | 21ns | 0.142 | 0 | 0 | 915 B |
| #7873 | ExecuteAsync |
net6.0 | 1.99μs | 2.6ns | 10.1ns | 0 | 0 | 0 | 952 B |
| #7873 | ExecuteAsync |
netcoreapp3.1 | 2.42μs | 10ns | 38.7ns | 0 | 0 | 0 | 952 B |
| #7873 | ExecuteAsync |
net472 | 2.55μs | 4.33ns | 16.8ns | 0.139 | 0 | 0 | 915 B |
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | SendAsync |
net6.0 | 6.99μs | 21.3ns | 82.5ns | 0 | 0 | 0 | 2.36 KB |
| master | SendAsync |
netcoreapp3.1 | 8.59μs | 32.3ns | 125ns | 0 | 0 | 0 | 2.9 KB |
| master | SendAsync |
net472 | 12.2μs | 9.13ns | 34.2ns | 0.486 | 0 | 0 | 3.18 KB |
| #7873 | SendAsync |
net6.0 | 7.19μs | 4.47ns | 17.3ns | 0 | 0 | 0 | 2.36 KB |
| #7873 | SendAsync |
netcoreapp3.1 | 8.52μs | 20.1ns | 77.9ns | 0 | 0 | 0 | 2.9 KB |
| #7873 | SendAsync |
net472 | 12.5μs | 7.48ns | 28ns | 0.503 | 0 | 0 | 3.18 KB |
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️
More allocations ⚠️ in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472
57.34 KB
65.54 KB
8.19 KB
14.29%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0
275.34 KB
276.98 KB
1.64 KB
0.60%
Fewer allocations 🎉 in #7873
Benchmark
Base Allocated
Diff Allocated
Change
Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1
258.27 KB
250.18 KB
-8.1 KB
-3.13%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472
289.19 KB
278.53 KB
-10.66 KB
-3.69%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0
45.32 KB
43.15 KB
-2.17 KB
-4.78%
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 | 57.34 KB | 65.54 KB | 8.19 KB | 14.29% |
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 | 275.34 KB | 276.98 KB | 1.64 KB | 0.60% |
| Benchmark | Base Allocated | Diff Allocated | Change | Change % |
|---|---|---|---|---|
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 | 258.27 KB | 250.18 KB | -8.1 KB | -3.13% |
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 | 289.19 KB | 278.53 KB | -10.66 KB | -3.69% |
| Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 | 45.32 KB | 43.15 KB | -2.17 KB | -4.78% |
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | StringConcatBenchmark |
net6.0 | 50.8μs | 414ns | 3.97μs | 0 | 0 | 0 | 45.32 KB |
| master | StringConcatBenchmark |
netcoreapp3.1 | 50μs | 291ns | 2.23μs | 0 | 0 | 0 | 43.19 KB |
| master | StringConcatBenchmark |
net472 | 57.2μs | 157ns | 586ns | 0 | 0 | 0 | 57.34 KB |
| master | StringConcatAspectBenchmark |
net6.0 | 504μs | 1.69μs | 8.08μs | 0 | 0 | 0 | 275.34 KB |
| master | StringConcatAspectBenchmark |
netcoreapp3.1 | 491μs | 1.28μs | 6.38μs | 0 | 0 | 0 | 258.27 KB |
| master | StringConcatAspectBenchmark |
net472 | 411μs | 2.2μs | 11.6μs | 0 | 0 | 0 | 289.19 KB |
| #7873 | StringConcatBenchmark |
net6.0 | 48.8μs | 259ns | 1.7μs | 0 | 0 | 0 | 43.15 KB |
| #7873 | StringConcatBenchmark |
netcoreapp3.1 | 48.4μs | 233ns | 1.04μs | 0 | 0 | 0 | 43.4 KB |
| #7873 | StringConcatBenchmark |
net472 | 56.9μs | 296ns | 1.39μs | 0 | 0 | 0 | 65.54 KB |
| #7873 | StringConcatAspectBenchmark |
net6.0 | 493μs | 2.19μs | 7.91μs | 0 | 0 | 0 | 276.98 KB |
| #7873 | StringConcatAspectBenchmark |
netcoreapp3.1 | 499μs | 2.08μs | 7.2μs | 0 | 0 | 0 | 250.18 KB |
| #7873 | StringConcatAspectBenchmark |
net472 | 412μs | 2.22μs | 11.9μs | 0 | 0 | 0 | 278.53 KB |
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | EnrichedLog |
net6.0 | 2.77μs | 3.78ns | 14.6ns | 0 | 0 | 0 | 1.7 KB |
| master | EnrichedLog |
netcoreapp3.1 | 3.57μs | 18.9ns | 98.4ns | 0 | 0 | 0 | 1.7 KB |
| master | EnrichedLog |
net472 | 4μs | 5.03ns | 19.5ns | 0.241 | 0 | 0 | 1.64 KB |
| #7873 | EnrichedLog |
net6.0 | 2.75μs | 13ns | 55.2ns | 0 | 0 | 0 | 1.7 KB |
| #7873 | EnrichedLog |
netcoreapp3.1 | 3.61μs | 17.6ns | 74.7ns | 0 | 0 | 0 | 1.7 KB |
| #7873 | EnrichedLog |
net472 | 3.91μs | 2.2ns | 8.21ns | 0.255 | 0 | 0 | 1.64 KB |
Benchmarks.Trace.Log4netBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | EnrichedLog |
net6.0 | 128μs | 623ns | 2.65μs | 0 | 0 | 0 | 4.31 KB |
| master | EnrichedLog |
netcoreapp3.1 | 129μs | 322ns | 1.16μs | 0 | 0 | 0 | 4.31 KB |
| master | EnrichedLog |
net472 | 168μs | 137ns | 530ns | 0 | 0 | 0 | 4.52 KB |
| #7873 | EnrichedLog |
net6.0 | 124μs | 81.3ns | 315ns | 0 | 0 | 0 | 4.31 KB |
| #7873 | EnrichedLog |
netcoreapp3.1 | 127μs | 53.4ns | 193ns | 0 | 0 | 0 | 4.31 KB |
| #7873 | EnrichedLog |
net472 | 168μs | 112ns | 434ns | 0 | 0 | 0 | 4.52 KB |
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | EnrichedLog |
net6.0 | 5.07μs | 8.02ns | 31.1ns | 0 | 0 | 0 | 2.26 KB |
| master | EnrichedLog |
netcoreapp3.1 | 6.8μs | 27.1ns | 105ns | 0 | 0 | 0 | 2.26 KB |
| master | EnrichedLog |
net472 | 7.78μs | 7.7ns | 29.8ns | 0.307 | 0 | 0 | 2.08 KB |
| #7873 | EnrichedLog |
net6.0 | 4.86μs | 21.3ns | 82.6ns | 0 | 0 | 0 | 2.26 KB |
| #7873 | EnrichedLog |
netcoreapp3.1 | 6.88μs | 17.2ns | 66.6ns | 0 | 0 | 0 | 2.26 KB |
| #7873 | EnrichedLog |
net472 | 7.96μs | 4.48ns | 16.8ns | 0.318 | 0 | 0 | 2.08 KB |
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | SendReceive |
net6.0 | 1.95μs | 9.1ns | 34.1ns | 0 | 0 | 0 | 1.2 KB |
| master | SendReceive |
netcoreapp3.1 | 2.73μs | 8.53ns | 33ns | 0 | 0 | 0 | 1.2 KB |
| master | SendReceive |
net472 | 3.09μs | 5.53ns | 21.4ns | 0.185 | 0 | 0 | 1.2 KB |
| #7873 | SendReceive |
net6.0 | 1.99μs | 1.12ns | 4.05ns | 0 | 0 | 0 | 1.2 KB |
| #7873 | SendReceive |
netcoreapp3.1 | 2.6μs | 9.91ns | 38.4ns | 0 | 0 | 0 | 1.2 KB |
| #7873 | SendReceive |
net472 | 3.08μs | 1.55ns | 5.59ns | 0.185 | 0 | 0 | 1.2 KB |
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | EnrichedLog |
net6.0 | 4.4μs | 5.62ns | 21.8ns | 0 | 0 | 0 | 1.58 KB |
| master | EnrichedLog |
netcoreapp3.1 | 5.86μs | 10.4ns | 40.2ns | 0 | 0 | 0 | 1.63 KB |
| master | EnrichedLog |
net472 | 6.61μs | 8.71ns | 33.7ns | 0.295 | 0 | 0 | 2.03 KB |
| #7873 | EnrichedLog |
net6.0 | 4.45μs | 14.9ns | 57.8ns | 0 | 0 | 0 | 1.58 KB |
| #7873 | EnrichedLog |
netcoreapp3.1 | 5.75μs | 18.3ns | 70.8ns | 0 | 0 | 0 | 1.63 KB |
| #7873 | EnrichedLog |
net472 | 6.7μs | 8.22ns | 31.8ns | 0.302 | 0 | 0 | 2.03 KB |
Benchmarks.Trace.SpanBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | StartFinishSpan |
net6.0 | 806ns | 0.304ns | 1.18ns | 0 | 0 | 0 | 576 B |
| master | StartFinishSpan |
netcoreapp3.1 | 981ns | 5.14ns | 24.7ns | 0 | 0 | 0 | 576 B |
| master | StartFinishSpan |
net472 | 934ns | 0.239ns | 0.924ns | 0.0899 | 0 | 0 | 578 B |
| master | StartFinishScope |
net6.0 | 955ns | 3.17ns | 12.3ns | 0 | 0 | 0 | 696 B |
| master | StartFinishScope |
netcoreapp3.1 | 1.14μs | 6.08ns | 31ns | 0 | 0 | 0 | 696 B |
| master | StartFinishScope |
net472 | 1.1μs | 0.221ns | 0.828ns | 0.1 | 0 | 0 | 658 B |
| master | StartFinishTwoScopes |
net6.0 | 1.82μs | 0.764ns | 2.96ns | 0 | 0 | 0 | 1.19 KB |
| master | StartFinishTwoScopes |
netcoreapp3.1 | 2.26μs | 11.3ns | 49.2ns | 0 | 0 | 0 | 1.19 KB |
| master | StartFinishTwoScopes |
net472 | 2.12μs | 2.43ns | 9.42ns | 0.17 | 0 | 0 | 1.08 KB |
| #7873 | StartFinishSpan |
net6.0 | 819ns | 4.39ns | 23.7ns | 0 | 0 | 0 | 576 B |
| #7873 | StartFinishSpan |
netcoreapp3.1 | 992ns | 5.06ns | 23.7ns | 0 | 0 | 0 | 576 B |
| #7873 | StartFinishSpan |
net472 | 913ns | 0.0534ns | 0.185ns | 0.0902 | 0 | 0 | 578 B |
| #7873 | StartFinishScope |
net6.0 | 952ns | 3.6ns | 14ns | 0 | 0 | 0 | 696 B |
| #7873 | StartFinishScope |
netcoreapp3.1 | 1.16μs | 5.91ns | 27.1ns | 0 | 0 | 0 | 696 B |
| #7873 | StartFinishScope |
net472 | 1.1μs | 0.688ns | 2.57ns | 0.1 | 0 | 0 | 658 B |
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed ✔️ Same allocations ✔️
Raw results
| Branch | Method | Toolchain | Mean | StdError | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|---|---|---|---|---|---|---|---|---|---|
| master | RunOnMethodBegin |
net6.0 | 1.13μs | 5.2ns | 20.8ns | 0 | 0 | 0 | 696 B |
| master | RunOnMethodBegin |
netcoreapp3.1 | 1.41μs | 6.92ns | 29.4ns | 0 | 0 | 0 | 696 B |
| master | RunOnMethodBegin |
net472 | 1.46μs | 0.161ns | 0.601ns | 0.102 | 0 | 0 | 658 B |
| #7873 | RunOnMethodBegin |
net6.0 | 1.09μs | 2.83ns | 10.9ns | 0 | 0 | 0 | 696 B |
| #7873 | RunOnMethodBegin |
netcoreapp3.1 | 1.42μs | 7.43ns | 38.6ns | 0 | 0 | 0 | 696 B |
| #7873 | RunOnMethodBegin |
net472 | 1.46μs | 1.61ns | 6.24ns | 0.102 | 0 | 0 | 658 B |
chrisnas
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a question about nullability
| private readonly object _lockObj; | ||
| private bool _isInitialized; | ||
| private IntPtr _engineStatusPtr; | ||
| private bool? _isProfilerReadyCache; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there a specific reason to make it nullable?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agreed, given we assume that it's always eventually going to be ready if it's not disabled, then a simple bool seems fine
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes removed in 0b0b726
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // once _isProfilerReadyCache is true, it's never false anymore | ||
| if (_isProfilerReadyCache) | ||
| { | ||
| return true; | ||
| } | ||
|
|
||
| EnsureNativeIsIntialized(); | ||
| return _engineStatusPtr != IntPtr.Zero && Marshal.ReadByte(_engineStatusPtr) != 0; | ||
| var isReady = _engineStatusPtr != IntPtr.Zero && Marshal.ReadByte(_engineStatusPtr) != 0; | ||
| _isProfilerReadyCache = isReady; | ||
| return isReady; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Caching hides profiler shutdown signal
After this change IsProfilerReady returns true forever once the profiler reports ready (lines 46-55) and never re-reads the native status byte. The native engine explicitly flips that flag back to false during shutdown (ProfilerEngineStatus::WriteIsProfilerEngineActive(false) in profiler/src/ProfilerEngine/Datadog.Profiler.Native/CorProfilerCallback.cpp around the DisposeInternal path) to tell managed components to stop writing trace-context data while the engine is unloading. With the new cache, managed code will keep reporting the profiler as ready after unload (e.g., during process shutdown), so ContextTracker.IsEnabled stays true and continues P/Invokes into native buffers while they are being torn down, defeating the intended synchronization and risking writes after the profiler stops.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is it valid @chrisnas ? it seems that indeed, ContextTracer.IsEnabled is tested before some native calls happen
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@anna-git : the comment is valid but we switch back to false AFTER the runtime shutdown. Maybe the code could be changed to only call EnsureIsInitialized() if _isProfilerReadyCache is false and keep on calling Marshal.ReadByte(). But the gain will be less...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
so, after discussion, let's leave it as is to keep the cache benefit, as we should be "protected" from interop calls as the profiler checks if it hasnt been shutdown
Summary of changes
We don't need to read and marshall a byte every time
Reason for change
Implementation details
Test coverage
Other details