dd-trace-dotnet icon indicating copy to clipboard operation
dd-trace-dotnet copied to clipboard

Use a null diagnostic observer to check impact

Open andrewlock opened this issue 3 weeks ago • 2 comments

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

andrewlock avatar Dec 05 '25 13:12 andrewlock

Execution-Time Benchmarks Report :stopwatch:

Execution-time results for samples comparing This PR (7912) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration75.26 ± (75.36 - 76.07) ms73.76 ± (73.76 - 74.36) ms-2.0%
.NET Framework 4.8 - Bailout
duration80.81 ± (80.43 - 81.23) ms79.33 ± (79.17 - 79.77) ms-1.8%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1055.82 ± (1056.78 - 1063.69) ms1059.03 ± (1063.52 - 1075.13) ms+0.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.95 ± (22.87 - 23.03) ms23.06 ± (22.98 - 23.14) ms+0.5%✅⬆️
process.time_to_main_ms87.53 ± (87.16 - 87.90) ms88.38 ± (88.02 - 88.74) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.92 - 10.92) MB10.92 ± (10.92 - 10.93) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.82 ± (22.76 - 22.89) ms23.06 ± (22.99 - 23.13) ms+1.0%✅⬆️
process.time_to_main_ms89.67 ± (89.33 - 90.01) ms90.65 ± (90.19 - 91.11) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.96 - 10.97) MB10.96 ± (10.96 - 10.96) MB-0.0%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms221.33 ± (220.07 - 222.58) ms222.02 ± (220.95 - 223.09) ms+0.3%✅⬆️
process.time_to_main_ms498.88 ± (497.71 - 500.05) ms501.74 ± (500.62 - 502.85) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.91 ± (47.88 - 47.93) MB47.92 ± (47.90 - 47.94) MB+0.0%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms21.97 ± (21.90 - 22.03) ms21.92 ± (21.84 - 22.00) ms-0.2%
process.time_to_main_ms76.87 ± (76.52 - 77.22) ms77.56 ± (77.16 - 77.96) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.63 ± (10.63 - 10.64) MB10.62 ± (10.62 - 10.62) MB-0.1%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.59 ± (21.53 - 21.66) ms21.60 ± (21.54 - 21.67) ms+0.0%✅⬆️
process.time_to_main_ms77.48 ± (77.22 - 77.74) ms77.38 ± (77.06 - 77.71) ms-0.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.68 ± (10.68 - 10.68) MB10.66 ± (10.66 - 10.66) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms211.72 ± (210.78 - 212.66) ms212.61 ± (211.59 - 213.63) ms+0.4%✅⬆️
process.time_to_main_ms467.34 ± (466.35 - 468.32) ms469.92 ± (468.85 - 470.99) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.09 ± (48.07 - 48.11) MB48.09 ± (48.07 - 48.12) MB+0.0%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.91 ± (19.84 - 19.99) ms19.96 ± (19.90 - 20.02) ms+0.2%✅⬆️
process.time_to_main_ms75.77 ± (75.44 - 76.09) ms75.93 ± (75.57 - 76.28) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.69 ± (7.68 - 7.70) MB7.64 ± (7.64 - 7.65) MB-0.6%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.91 ± (19.85 - 19.98) ms19.78 ± (19.71 - 19.85) ms-0.7%
process.time_to_main_ms76.65 ± (76.37 - 76.94) ms76.16 ± (75.82 - 76.51) ms-0.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.73 ± (7.73 - 7.74) MB7.69 ± (7.68 - 7.69) MB-0.6%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms196.59 ± (195.72 - 197.47) ms191.73 ± (190.78 - 192.69) ms-2.5%
process.time_to_main_ms457.03 ± (456.07 - 457.98) ms455.89 ± (454.77 - 457.00) ms-0.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.51 ± (36.47 - 36.55) MB36.41 ± (36.37 - 36.45) MB-0.3%
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.1%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.90 ± (192.75 - 193.56) ms199.91 ± (199.55 - 200.80) ms+3.6%✅⬆️
.NET Framework 4.8 - Bailout
duration196.43 ± (196.34 - 196.95) ms199.79 ± (199.74 - 200.66) ms+1.7%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1111.15 ± (1113.93 - 1121.94) ms1125.64 ± (1127.99 - 1137.23) ms+1.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms188.32 ± (187.99 - 188.64) ms192.16 ± (191.70 - 192.61) ms+2.0%✅⬆️
process.time_to_main_ms80.64 ± (80.43 - 80.85) ms82.37 ± (82.13 - 82.60) ms+2.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.08 - 16.14) MB16.11 ± (16.09 - 16.13) MB-0.0%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.4%
.NET Core 3.1 - Bailout
process.internal_duration_ms188.60 ± (188.22 - 188.98) ms190.42 ± (189.98 - 190.86) ms+1.0%✅⬆️
process.time_to_main_ms82.19 ± (82.03 - 82.35) ms83.60 ± (83.40 - 83.80) ms+1.7%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.13 ± (16.10 - 16.16) MB16.21 ± (16.18 - 16.23) MB+0.5%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.2%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms397.35 ± (394.81 - 399.90) ms406.00 ± (403.20 - 408.80) ms+2.2%✅⬆️
process.time_to_main_ms471.84 ± (471.18 - 472.50) ms480.70 ± (479.89 - 481.51) ms+1.9%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.69 ± (58.56 - 58.83) MB58.99 ± (58.90 - 59.09) MB+0.5%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.0%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms192.06 ± (191.65 - 192.46) ms195.51 ± (195.05 - 195.97) ms+1.8%✅⬆️
process.time_to_main_ms70.13 ± (69.96 - 70.30) ms71.21 ± (71.03 - 71.39) ms+1.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.31 ± (16.21 - 16.41) MB16.38 ± (16.35 - 16.40) MB+0.4%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 19)19 ± (19 - 19)+4.1%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.74 ± (190.48 - 190.99) ms194.32 ± (193.86 - 194.78) ms+1.9%✅⬆️
process.time_to_main_ms70.77 ± (70.67 - 70.86) ms71.88 ± (71.71 - 72.05) ms+1.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.95 ± (15.77 - 16.12) MB16.27 ± (16.18 - 16.35) MB+2.0%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+4.0%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms406.20 ± (404.16 - 408.25) ms413.79 ± (411.82 - 415.76) ms+1.9%✅⬆️
process.time_to_main_ms441.49 ± (440.89 - 442.08) ms448.32 ± (447.33 - 449.31) ms+1.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.11 ± (58.98 - 59.25) MB59.30 ± (59.21 - 59.40) MB+0.3%✅⬆️
runtime.dotnet.threads.count30 ± (30 - 30)30 ± (30 - 30)-0.0%
.NET 8 - Baseline
process.internal_duration_ms191.16 ± (190.82 - 191.51) ms196.11 ± (195.64 - 196.58) ms+2.6%✅⬆️
process.time_to_main_ms69.64 ± (69.46 - 69.82) ms71.16 ± (70.95 - 71.37) ms+2.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.78 ± (11.75 - 11.81) MB11.67 ± (11.66 - 11.69) MB-0.9%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.4%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms189.43 ± (189.21 - 189.65) ms193.25 ± (192.73 - 193.76) ms+2.0%✅⬆️
process.time_to_main_ms70.27 ± (70.19 - 70.35) ms71.55 ± (71.37 - 71.73) ms+1.8%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.85 ± (11.80 - 11.91) MB11.73 ± (11.71 - 11.76) MB-1.0%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.5%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms366.18 ± (364.77 - 367.60) ms369.39 ± (368.05 - 370.72) ms+0.9%✅⬆️
process.time_to_main_ms428.08 ± (427.58 - 428.58) ms431.82 ± (431.13 - 432.52) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.97 ± (47.94 - 48.00) MB48.03 ± (48.00 - 48.06) MB+0.1%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.1%
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 (7912) - mean (74ms)  : 70, 79
    master - mean (76ms)  : 70, 81

    section Bailout
    This PR (7912) - mean (79ms)  : 75, 84
    master - mean (81ms)  : 75, 87

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (1,069ms)  : 982, 1157
    master - mean (1,060ms)  : 1010, 1111

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 (7912) - mean (119ms)  : 112, 127
    master - mean (118ms)  : 111, 125

    section Bailout
    This PR (7912) - mean (121ms)  : 112, 130
    master - mean (120ms)  : 114, 126

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (759ms)  : 723, 794
    master - mean (759ms)  : 728, 791

FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7912) - mean (106ms)  : 97, 116
    master - mean (106ms)  : 99, 113

    section Bailout
    This PR (7912) - mean (106ms)  : 99, 114
    master - mean (106ms)  : 102, 111

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (709ms)  : 678, 740
    master - mean (709ms)  : 679, 740

FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7912) - mean (104ms)  : 98, 111
    master - mean (104ms)  : 98, 111

    section Bailout
    This PR (7912) - mean (104ms)  : 97, 112
    master - mean (105ms)  : 99, 112

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (678ms)  : 645, 710
    master - mean (694ms)  : 669, 719

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 (7912) - mean (200ms)  : 190, 210
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7912) - mean (200ms)  : 195, 205
    master - mean (197ms)  : 194, 200

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (1,133ms)  : 1062, 1203
    master - mean (1,118ms)  : 1061, 1175

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 (7912) - mean (283ms)  : 274, 292
    master - mean (277ms)  : 272, 282

    section Bailout
    This PR (7912) - mean (283ms)  : 274, 292
    master - mean (279ms)  : 274, 284

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (927ms)  : 884, 969
    master - mean (901ms)  : 864, 939

HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7912) - mean (275ms)  : 268, 283
    master - mean (271ms)  : 266, 275

    section Bailout
    This PR (7912) - mean (275ms)  : 265, 286
    master - mean (270ms)  : 267, 273

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (896ms)  : 850, 942
    master - mean (882ms)  : 846, 918

HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7912) - mean (277ms)  : 267, 287
    master - mean (271ms)  : 266, 275

    section Bailout
    This PR (7912) - mean (275ms)  : 268, 282
    master - mean (269ms)  : 266, 272

    section CallTarget+Inlining+NGEN
    This PR (7912) - mean (833ms)  : 809, 858
    master - mean (826ms)  : 801, 850

Benchmarks

Benchmarks Report for benchmark platform :snail:

Benchmarks for #7912 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.135
  • 5 benchmarks are slower, with geometric mean 1.644
  • 2 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

  • Mann–Whitney U test with statistical test for significance of 5%
  • Only results indicating a difference greater than 10% and 0.3 ns are considered.

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11.3μs 53.3ns 207ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 13.9μs 56ns 210ns 0 0 0 5.71 KB
master StartStopWithChild net472 21.8μs 69ns 258ns 0.975 0.325 0.108 5.98 KB
#7912 StartStopWithChild net6.0 11.1μs 59.3ns 319ns 0 0 0 5.5 KB
#7912 StartStopWithChild netcoreapp3.1 14μs 61.6ns 239ns 0 0 0 5.71 KB
#7912 StartStopWithChild net472 22.1μs 119ns 650ns 0.88 0.22 0 5.99 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 1.27ms 137ns 511ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.38ms 123ns 459ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.72ms 1.05μs 4.05μs 0 0 0 3.26 KB
#7912 WriteAndFlushEnrichedTraces net6.0 1.28ms 1.51μs 5.84μs 0 0 0 2.7 KB
#7912 WriteAndFlushEnrichedTraces netcoreapp3.1 1.36ms 104ns 360ns 0 0 0 2.7 KB
#7912 WriteAndFlushEnrichedTraces net472 1.72ms 250ns 968ns 0 0 0 3.26 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #7912

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑net472 1.163 294.75 342.89

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.08μs 5.88ns 35.3ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.39μs 7.93ns 48.9ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.02μs 0.381ns 1.32ns 0.19 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.33μs 4.69ns 18.2ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.03μs 47ns 221ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.74μs 7.67ns 29.7ns 0.737 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 323ns 1.48ns 5.91ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 418ns 1.83ns 7.07ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 295ns 0.0428ns 0.166ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.41μs 23.3ns 90.3ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.77μs 40.8ns 196ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.85μs 9.18ns 35.5ns 0.585 0 0 3.8 KB
#7912 AllCycleSimpleBody net6.0 1.09μs 6.07ns 41.2ns 0 0 0 1.22 KB
#7912 AllCycleSimpleBody netcoreapp3.1 1.41μs 7.72ns 43.7ns 0 0 0 1.2 KB
#7912 AllCycleSimpleBody net472 1.03μs 0.232ns 0.899ns 0.195 0 0 1.23 KB
#7912 AllCycleMoreComplexBody net6.0 7.16μs 37.2ns 193ns 0 0 0 4.72 KB
#7912 AllCycleMoreComplexBody netcoreapp3.1 9.09μs 47.1ns 235ns 0 0 0 4.62 KB
#7912 AllCycleMoreComplexBody net472 7.72μs 5.85ns 22.6ns 0.731 0 0 4.74 KB
#7912 ObjectExtractorSimpleBody net6.0 316ns 1.77ns 10.5ns 0 0 0 280 B
#7912 ObjectExtractorSimpleBody netcoreapp3.1 401ns 2.12ns 10.2ns 0 0 0 272 B
#7912 ObjectExtractorSimpleBody net472 343ns 0.486ns 1.69ns 0.0429 0 0 281 B
#7912 ObjectExtractorMoreComplexBody net6.0 6.27μs 33.9ns 189ns 0 0 0 3.78 KB
#7912 ObjectExtractorMoreComplexBody netcoreapp3.1 8.04μs 1.49ns 5.56ns 0 0 0 3.69 KB
#7912 ObjectExtractorMoreComplexBody net472 6.69μs 6.04ns 23.4ns 0.602 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.1μs 242ns 905ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 98.2μs 301ns 1.17μs 0 0 0 32.4 KB
master EncodeArgs net472 109μs 11ns 41ns 4.89 0 0 32.5 KB
master EncodeLegacyArgs net6.0 141μs 7.84ns 29.3ns 0 0 0 2.14 KB
master EncodeLegacyArgs netcoreapp3.1 200μs 105ns 406ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 265μs 30.8ns 115ns 0 0 0 2.14 KB
#7912 EncodeArgs net6.0 75.7μs 276ns 1.07μs 0 0 0 32.4 KB
#7912 EncodeArgs netcoreapp3.1 100μs 141ns 548ns 0 0 0 32.4 KB
#7912 EncodeArgs net472 108μs 21.9ns 79ns 4.88 0 0 32.5 KB
#7912 EncodeLegacyArgs net6.0 145μs 5.71ns 19.8ns 0 0 0 2.14 KB
#7912 EncodeLegacyArgs netcoreapp3.1 200μs 193ns 746ns 0 0 0 2.14 KB
#7912 EncodeLegacyArgs net472 265μs 24.8ns 96.2ns 0 0 0 2.14 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 434μs 1.76μs 6.57μs 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 482μs 2.79μs 24.4μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 501μs 434ns 1.62μs 0 0 0 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 338μs 1.71μs 8.2μs 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 358μs 3.22μs 30.9μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 372μs 127ns 457ns 0 0 0 0 b
#7912 RunWafRealisticBenchmark net6.0 454μs 2.14μs 8.28μs 0 0 0 4.55 KB
#7912 RunWafRealisticBenchmark netcoreapp3.1 461μs 3.2μs 30.5μs 0 0 0 4.48 KB
#7912 RunWafRealisticBenchmark net472 496μs 456ns 1.64μs 0 0 0 0 b
#7912 RunWafRealisticBenchmarkWithAttack net6.0 310μs 783ns 2.82μs 0 0 0 2.24 KB
#7912 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 337μs 1.44μs 4.97μs 0 0 0 2.22 KB
#7912 RunWafRealisticBenchmarkWithAttack net472 369μs 363ns 1.31μs 0 0 0 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 84.5μs 433ns 2.17μs 0 0 0 18.97 KB
master SendRequest netcoreapp3.1 98.2μs 434ns 2.42μs 0 0 0 21.18 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#7912 SendRequest net6.0 86.5μs 405ns 1.62μs 0 0 0 18.97 KB
#7912 SendRequest netcoreapp3.1 97.3μs 351ns 2.55μs 0 0 0 21.18 KB
#7912 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #7912

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice‑netcoreapp3.1 1.849 2,168,450.00 4,008,700.00
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑netcoreapp3.1 1.626 1,685,300.00 2,740,650.00

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.94ms 2μs 7.76μs 0 0 0 640 KB
master OriginalCharSlice netcoreapp3.1 2.17ms 5.12μs 33.5μs 0 0 0 640 KB
master OriginalCharSlice net472 2.59ms 730ns 2.73μs 0 0 0 638.98 KB
master OptimizedCharSlice net6.0 1.43ms 539ns 2.09μs 0 0 0 0 b
master OptimizedCharSlice netcoreapp3.1 1.69ms 6.87μs 41.8μs 0 0 0 0 b
master OptimizedCharSlice net472 1.91ms 477ns 1.72μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 1.03ms 566ns 2.04μs 0 0 0 0 b
master OptimizedCharSliceWithPool netcoreapp3.1 1.88ms 1.13μs 4.22μs 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.14ms 619ns 2.4μs 0 0 0 0 b
#7912 OriginalCharSlice net6.0 1.96ms 1.43μs 5.52μs 0 0 0 640 KB
#7912 OriginalCharSlice netcoreapp3.1 4.01ms 1.2μs 4.48μs 0 0 0 640.05 KB
#7912 OriginalCharSlice net472 2.62ms 457ns 1.71μs 0 0 0 638.98 KB
#7912 OptimizedCharSlice net6.0 1.57ms 1.37μs 5.32μs 0 0 0 0 b
#7912 OptimizedCharSlice netcoreapp3.1 2.74ms 934ns 3.5μs 0 0 0 0 b
#7912 OptimizedCharSlice net472 1.94ms 536ns 2.07μs 0 0 0 0 b
#7912 OptimizedCharSliceWithPool net6.0 1.03ms 1.1μs 4.25μs 0 0 0 0 b
#7912 OptimizedCharSliceWithPool netcoreapp3.1 1.89ms 1.34μs 5μs 0 0 0 0 b
#7912 OptimizedCharSliceWithPool net472 1.15ms 353ns 1.37μs 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower :warning: More allocations :warning:

Slower :warning: in #7912

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 1.117 898,196.43 1,003,730.36

Faster :tada: in #7912

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.135 789,099.06 695,501.39

More allocations :warning: in #7912

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 41.98 KB 42.22 KB 246 B 0.59%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 711μs 896ns 3.47μs 0 0 0 41.69 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 786μs 3.88μs 17.4μs 0 0 0 41.98 KB
master WriteAndFlushEnrichedTraces net472 889μs 4.74μs 24.2μs 8.93 4.46 0 56.32 KB
#7912 WriteAndFlushEnrichedTraces net6.0 663μs 1.03μs 4μs 0 0 0 41.62 KB
#7912 WriteAndFlushEnrichedTraces netcoreapp3.1 694μs 2.96μs 10.3μs 0 0 0 42.22 KB
#7912 WriteAndFlushEnrichedTraces net472 1.01ms 3.81μs 14.7μs 4.46 0 0 56.07 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.98μs 7.57ns 29.3ns 0 0 0 968 B
master ExecuteNonQuery netcoreapp3.1 2.52μs 7.87ns 30.5ns 0 0 0 960 B
master ExecuteNonQuery net472 2.84μs 3.77ns 14.6ns 0.141 0 0 931 B
#7912 ExecuteNonQuery net6.0 1.9μs 1.01ns 3.91ns 0 0 0 968 B
#7912 ExecuteNonQuery netcoreapp3.1 2.57μs 10.2ns 39.5ns 0 0 0 960 B
#7912 ExecuteNonQuery net472 2.85μs 2.01ns 7.8ns 0.14 0 0 931 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.83μs 4.33ns 16.8ns 0 0 0 952 B
master CallElasticsearch netcoreapp3.1 2.19μs 10.6ns 45ns 0 0 0 968 B
master CallElasticsearch net472 3.38μs 4.53ns 17.5ns 0.151 0 0 955 B
master CallElasticsearchAsync net6.0 1.76μs 1.04ns 4.03ns 0 0 0 928 B
master CallElasticsearchAsync netcoreapp3.1 2.41μs 11.6ns 50.4ns 0 0 0 1.02 KB
master CallElasticsearchAsync net472 3.47μs 5.37ns 20.8ns 0.156 0 0 1.01 KB
#7912 CallElasticsearch net6.0 1.69μs 5.71ns 22.1ns 0 0 0 952 B
#7912 CallElasticsearch netcoreapp3.1 2.19μs 6.83ns 26.5ns 0 0 0 968 B
#7912 CallElasticsearch net472 3.34μs 1.52ns 5.27ns 0.151 0 0 955 B
#7912 CallElasticsearchAsync net6.0 1.74μs 8.84ns 38.5ns 0 0 0 928 B
#7912 CallElasticsearchAsync netcoreapp3.1 2.49μs 5.3ns 20.5ns 0 0 0 1.02 KB
#7912 CallElasticsearchAsync net472 3.51μs 5.09ns 19.7ns 0.158 0 0 1.01 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.92μs 6.44ns 25ns 0 0 0 896 B
master ExecuteAsync netcoreapp3.1 2.37μs 2.06ns 7.96ns 0 0 0 896 B
master ExecuteAsync net472 2.53μs 2.34ns 9.07ns 0.127 0 0 858 B
#7912 ExecuteAsync net6.0 1.93μs 1.43ns 5.54ns 0 0 0 896 B
#7912 ExecuteAsync netcoreapp3.1 2.48μs 10.5ns 40.6ns 0 0 0 896 B
#7912 ExecuteAsync net472 2.6μs 1.03ns 3.85ns 0.13 0 0 858 B
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.9μs 3.4ns 13.2ns 0 0 0 2.29 KB
master SendAsync netcoreapp3.1 8.55μs 24.6ns 95.3ns 0 0 0 2.83 KB
master SendAsync net472 12.1μs 5.86ns 21.9ns 0.484 0 0 3.08 KB
#7912 SendAsync net6.0 6.87μs 12.1ns 43.5ns 0 0 0 2.29 KB
#7912 SendAsync netcoreapp3.1 8.47μs 29.1ns 109ns 0 0 0 2.83 KB
#7912 SendAsync net472 12.1μs 6.61ns 24.7ns 0.483 0 0 3.08 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Slower :warning: More allocations :warning:

Slower :warning: in #7912

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 3.074 470,000.00 1,444,750.00

More allocations :warning: in #7912

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 256.34 KB 335.98 KB 79.64 KB 31.07%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 44μs 231ns 1.15μs 0 0 0 42.51 KB
master StringConcatBenchmark netcoreapp3.1 49.3μs 259ns 1.29μs 0 0 0 42.54 KB
master StringConcatBenchmark net472 56.1μs 281ns 1.26μs 0 0 0 49.15 KB
master StringConcatAspectBenchmark net6.0 471μs 1.74μs 8.17μs 0 0 0 256.34 KB
master StringConcatAspectBenchmark netcoreapp3.1 543μs 2.01μs 8.05μs 0 0 0 276.33 KB
master StringConcatAspectBenchmark net472 408μs 2.2μs 11.6μs 0 0 0 270.34 KB
#7912 StringConcatBenchmark net6.0 45.1μs 264ns 2.39μs 0 0 0 42.51 KB
#7912 StringConcatBenchmark netcoreapp3.1 55.2μs 691ns 6.88μs 0 0 0 42.54 KB
#7912 StringConcatBenchmark net472 57.5μs 216ns 778ns 0 0 0 49.15 KB
#7912 StringConcatAspectBenchmark net6.0 1.45ms 2μs 6.92μs 0 0 0 335.98 KB
#7912 StringConcatAspectBenchmark netcoreapp3.1 556μs 1.84μs 6.9μs 0 0 0 275.94 KB
#7912 StringConcatAspectBenchmark net472 408μs 2.16μs 11.6μs 0 0 0 270.34 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.8μs 7.55ns 29.2ns 0 0 0 1.69 KB
master EnrichedLog netcoreapp3.1 3.47μs 17.7ns 81ns 0 0 0 1.7 KB
master EnrichedLog net472 3.78μs 8ns 31ns 0.246 0 0 1.6 KB
#7912 EnrichedLog net6.0 2.71μs 13.7ns 63ns 0 0 0 1.69 KB
#7912 EnrichedLog netcoreapp3.1 3.58μs 3.92ns 15.2ns 0 0 0 1.7 KB
#7912 EnrichedLog net472 3.8μs 2.82ns 10.9ns 0.246 0 0 1.6 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 124μs 119ns 459ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 130μs 194ns 750ns 0 0 0 4.31 KB
master EnrichedLog net472 167μs 95.5ns 370ns 0 0 0 4.51 KB
#7912 EnrichedLog net6.0 122μs 66.5ns 240ns 0 0 0 4.31 KB
#7912 EnrichedLog netcoreapp3.1 127μs 160ns 598ns 0 0 0 4.31 KB
#7912 EnrichedLog net472 167μs 196ns 706ns 0 0 0 4.51 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.34μs 6.73ns 26ns 0 0 0 2.24 KB
master EnrichedLog netcoreapp3.1 6.88μs 19.9ns 77.3ns 0 0 0 2.26 KB
master EnrichedLog net472 7.64μs 4.4ns 17ns 0.305 0 0 2.05 KB
#7912 EnrichedLog net6.0 5.28μs 12.7ns 49.2ns 0 0 0 2.24 KB
#7912 EnrichedLog netcoreapp3.1 6.74μs 22.5ns 87.3ns 0 0 0 2.26 KB
#7912 EnrichedLog net472 7.64μs 4.58ns 17.1ns 0.304 0 0 2.05 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.94μs 9.88ns 47.4ns 0 0 0 1.12 KB
master SendReceive netcoreapp3.1 2.45μs 10.4ns 40.4ns 0 0 0 1.14 KB
master SendReceive net472 2.87μs 1.11ns 4.14ns 0.17 0 0 1.12 KB
#7912 SendReceive net6.0 1.94μs 9.19ns 36.8ns 0 0 0 1.12 KB
#7912 SendReceive netcoreapp3.1 2.46μs 11.6ns 44.9ns 0 0 0 1.14 KB
#7912 SendReceive net472 2.82μs 1.62ns 6.27ns 0.171 0 0 1.12 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.53μs 4.41ns 17.1ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.6μs 8.71ns 33.7ns 0 0 0 1.63 KB
master EnrichedLog net472 6.55μs 9.66ns 37.4ns 0.295 0 0 2.03 KB
#7912 EnrichedLog net6.0 4.22μs 2.45ns 9.15ns 0 0 0 1.58 KB
#7912 EnrichedLog netcoreapp3.1 5.62μs 16.5ns 63.8ns 0 0 0 1.63 KB
#7912 EnrichedLog net472 6.58μs 12.2ns 47.3ns 0.297 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 766ns 0.57ns 2.21ns 0 0 0 520 B
master StartFinishSpan netcoreapp3.1 956ns 4.94ns 22.6ns 0 0 0 520 B
master StartFinishSpan net472 896ns 0.21ns 0.813ns 0.0808 0 0 522 B
master StartFinishScope net6.0 928ns 0.655ns 2.53ns 0 0 0 640 B
master StartFinishScope netcoreapp3.1 1.14μs 5.65ns 24.6ns 0 0 0 640 B
master StartFinishScope net472 1.11μs 0.717ns 2.78ns 0.0942 0 0 602 B
master StartFinishTwoScopes net6.0 1.8μs 9.55ns 48.7ns 0 0 0 1.19 KB
master StartFinishTwoScopes netcoreapp3.1 2.18μs 10ns 38.9ns 0 0 0 1.19 KB
master StartFinishTwoScopes net472 2.18μs 0.186ns 0.722ns 0.164 0 0 1.08 KB
#7912 StartFinishSpan net6.0 770ns 0.374ns 1.45ns 0 0 0 520 B
#7912 StartFinishSpan netcoreapp3.1 984ns 5.09ns 23.3ns 0 0 0 520 B
#7912 StartFinishSpan net472 889ns 0.212ns 0.821ns 0.0802 0 0 522 B
#7912 StartFinishScope net6.0 916ns 4.3ns 17.2ns 0 0 0 640 B
#7912 StartFinishScope netcoreapp3.1 1.14μs 5.76ns 27ns 0 0 0 640 B
#7912 StartFinishScope net472 1.09μs 0.401ns 1.55ns 0.0931 0 0 602 B
#7912 StartFinishTwoScopes net6.0 1.84μs 2.88ns 11.2ns 0 0 0 1.19 KB
#7912 StartFinishTwoScopes netcoreapp3.1 2.17μs 11ns 52.8ns 0 0 0 1.19 KB
#7912 StartFinishTwoScopes net472 2.15μs 0.703ns 2.72ns 0.162 0 0 1.08 KB
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.06μs 0.658ns 2.55ns 0 0 0 640 B
master RunOnMethodBegin netcoreapp3.1 1.42μs 4.84ns 18.7ns 0 0 0 640 B
master RunOnMethodBegin net472 1.42μs 0.221ns 0.828ns 0.0921 0 0 602 B
#7912 RunOnMethodBegin net6.0 1.1μs 4.08ns 15.8ns 0 0 0 640 B
#7912 RunOnMethodBegin netcoreapp3.1 1.41μs 7.01ns 31.3ns 0 0 0 640 B
#7912 RunOnMethodBegin net472 1.45μs 0.278ns 1.04ns 0.094 0 0 602 B

pr-commenter[bot] avatar Dec 05 '25 14:12 pr-commenter[bot]