Skip to content

Conversation

@robcarlan-datadog
Copy link
Contributor

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

@datadog-datadog-prod-us1

This comment has been minimized.

@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Nov 14, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7827) 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.82 ± (75.91 - 76.74) ms74.35 ± (74.39 - 75.06) ms-1.9%
.NET Framework 4.8 - Bailout
duration80.21 ± (80.26 - 81.10) ms79.01 ± (79.33 - 80.25) ms-1.5%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1075.50 ± (1077.12 - 1088.66) ms1065.00 ± (1065.15 - 1076.84) ms-1.0%
.NET Core 3.1 - Baseline
process.internal_duration_ms23.08 ± (23.01 - 23.15) ms22.86 ± (22.78 - 22.93) ms-1.0%
process.time_to_main_ms87.75 ± (87.33 - 88.17) ms86.67 ± (86.29 - 87.05) ms-1.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.93 ± (10.92 - 10.93) MB10.91 ± (10.91 - 10.91) MB-0.2%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms23.05 ± (22.98 - 23.11) ms22.78 ± (22.71 - 22.86) ms-1.1%
process.time_to_main_ms89.97 ± (89.51 - 90.43) ms89.02 ± (88.58 - 89.45) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.96 - 10.97) MB10.95 ± (10.95 - 10.95) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms222.55 ± (221.19 - 223.90) ms220.18 ± (218.73 - 221.64) ms-1.1%
process.time_to_main_ms507.24 ± (506.04 - 508.44) ms500.37 ± (499.13 - 501.61) ms-1.4%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.77 ± (47.75 - 47.79) MB47.74 ± (47.72 - 47.76) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.1%
.NET 6 - Baseline
process.internal_duration_ms22.19 ± (22.11 - 22.26) ms21.76 ± (21.69 - 21.83) ms-1.9%
process.time_to_main_ms78.27 ± (77.82 - 78.71) ms76.57 ± (76.25 - 76.90) ms-2.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.61 - 10.62) MB10.63 ± (10.62 - 10.63) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms22.12 ± (22.04 - 22.19) ms21.89 ± (21.79 - 21.99) ms-1.0%
process.time_to_main_ms80.13 ± (79.68 - 80.58) ms78.42 ± (77.96 - 78.88) ms-2.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.69 ± (10.68 - 10.69) MB10.66 ± (10.66 - 10.67) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms212.53 ± (211.20 - 213.86) ms210.35 ± (208.62 - 212.08) ms-1.0%
process.time_to_main_ms474.18 ± (473.13 - 475.23) ms470.65 ± (469.48 - 471.83) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.08 ± (48.06 - 48.10) MB48.06 ± (48.04 - 48.09) MB-0.0%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 8 - Baseline
process.internal_duration_ms20.07 ± (19.99 - 20.14) ms20.40 ± (20.33 - 20.48) ms+1.7%✅⬆️
process.time_to_main_ms75.48 ± (75.08 - 75.89) ms77.91 ± (77.48 - 78.34) ms+3.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.67 ± (7.66 - 7.67) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.03 ± (19.93 - 20.13) ms20.32 ± (20.26 - 20.39) ms+1.5%✅⬆️
process.time_to_main_ms76.69 ± (76.22 - 77.15) ms79.60 ± (79.15 - 80.06) ms+3.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.71 ± (7.71 - 7.72) MB7.73 ± (7.72 - 7.73) MB+0.2%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms194.42 ± (193.47 - 195.37) ms195.58 ± (194.59 - 196.58) ms+0.6%✅⬆️
process.time_to_main_ms461.37 ± (460.00 - 462.75) ms463.63 ± (462.34 - 464.92) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.45 ± (36.42 - 36.49) MB36.52 ± (36.48 - 36.56) MB+0.2%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)-0.2%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration193.40 ± (193.32 - 194.05) ms193.77 ± (193.76 - 194.64) ms+0.2%✅⬆️
.NET Framework 4.8 - Bailout
duration197.65 ± (197.35 - 197.88) ms196.13 ± (196.07 - 196.68) ms-0.8%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1105.52 ± (1109.89 - 1118.54) ms1111.68 ± (1117.23 - 1127.23) ms+0.6%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms194.48 ± (194.09 - 194.86) ms188.07 ± (187.77 - 188.37) ms-3.3%
process.time_to_main_ms83.44 ± (83.20 - 83.69) ms81.10 ± (80.87 - 81.34) ms-2.8%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.01 ± (15.98 - 16.04) MB16.15 ± (16.12 - 16.18) MB+0.9%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+0.4%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms189.80 ± (189.36 - 190.24) ms187.62 ± (187.36 - 187.88) ms-1.1%
process.time_to_main_ms82.80 ± (82.62 - 82.97) ms81.88 ± (81.74 - 82.02) ms-1.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.05 ± (16.03 - 16.07) MB16.17 ± (16.14 - 16.20) MB+0.7%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (20 - 21)+0.0%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms400.85 ± (398.32 - 403.37) ms400.97 ± (398.24 - 403.70) ms+0.0%✅⬆️
process.time_to_main_ms476.12 ± (475.33 - 476.91) ms471.42 ± (470.63 - 472.20) ms-1.0%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.63 ± (58.50 - 58.76) MB58.48 ± (58.35 - 58.62) MB-0.3%
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 29)-0.0%
.NET 6 - Baseline
process.internal_duration_ms195.10 ± (194.63 - 195.57) ms192.61 ± (192.30 - 192.91) ms-1.3%
process.time_to_main_ms70.71 ± (70.53 - 70.89) ms70.19 ± (69.99 - 70.38) ms-0.7%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.37 ± (16.35 - 16.40) MB16.22 ± (16.10 - 16.35) MB-0.9%
runtime.dotnet.threads.count19 ± (19 - 19)18 ± (18 - 19)-3.8%
.NET 6 - Bailout
process.internal_duration_ms193.87 ± (193.38 - 194.37) ms191.71 ± (191.34 - 192.07) ms-1.1%
process.time_to_main_ms71.51 ± (71.31 - 71.71) ms70.98 ± (70.87 - 71.10) ms-0.7%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.46 ± (16.43 - 16.49) MB16.17 ± (16.03 - 16.31) MB-1.8%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-2.3%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms419.53 ± (416.27 - 422.79) ms411.17 ± (408.39 - 413.94) ms-2.0%
process.time_to_main_ms444.06 ± (443.33 - 444.79) ms442.00 ± (441.35 - 442.65) ms-0.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.80 ± (58.66 - 58.93) MB58.50 ± (58.35 - 58.65) MB-0.5%
runtime.dotnet.threads.count30 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms192.11 ± (191.63 - 192.60) ms190.34 ± (190.06 - 190.62) ms-0.9%
process.time_to_main_ms69.77 ± (69.60 - 69.94) ms69.37 ± (69.19 - 69.54) ms-0.6%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.70 ± (11.68 - 11.73) MB11.73 ± (11.71 - 11.76) MB+0.2%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.1%
.NET 8 - Bailout
process.internal_duration_ms192.57 ± (192.08 - 193.06) ms189.93 ± (189.66 - 190.21) ms-1.4%
process.time_to_main_ms70.99 ± (70.84 - 71.13) ms70.38 ± (70.28 - 70.49) ms-0.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.74 ± (11.72 - 11.76) MB11.77 ± (11.74 - 11.79) MB+0.2%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.6%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms368.63 ± (367.22 - 370.04) ms363.09 ± (361.60 - 364.57) ms-1.5%
process.time_to_main_ms433.27 ± (432.54 - 434.01) ms431.30 ± (430.70 - 431.90) ms-0.5%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.82 ± (47.78 - 47.85) MB47.90 ± (47.87 - 47.93) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.3%✅⬆️
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 (7827) - mean (75ms)  : 70, 80
    master - mean (76ms)  : 70, 83

    section Bailout
    This PR (7827) - mean (80ms)  : 73, 86
    master - mean (81ms)  : 75, 87

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (1,071ms)  : 988, 1154
    master - mean (1,083ms)  : 1001, 1165

Loading
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 (7827) - mean (117ms)  : 109, 125
    master - mean (118ms)  : 110, 126

    section Bailout
    This PR (7827) - mean (119ms)  : 111, 127
    master - mean (121ms)  : 111, 131

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (754ms)  : 704, 804
    master - mean (763ms)  : 725, 802

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7827) - mean (105ms)  : 99, 112
    master - mean (108ms)  : 100, 116

    section Bailout
    This PR (7827) - mean (108ms)  : 97, 118
    master - mean (110ms)  : 100, 119

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (714ms)  : 662, 765
    master - mean (718ms)  : 674, 761

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

    section Bailout
    This PR (7827) - mean (109ms)  : 100, 117
    master - mean (105ms)  : 96, 115

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (698ms)  : 659, 737
    master - mean (691ms)  : 658, 724

Loading
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 (7827) - mean (194ms)  : 188, 200
    master - mean (194ms)  : 190, 197

    section Bailout
    This PR (7827) - mean (196ms)  : 193, 199
    master - mean (198ms)  : 195, 200

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (1,122ms)  : 1045, 1200
    master - mean (1,114ms)  : 1051, 1177

Loading
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 (7827) - mean (278ms)  : 274, 282
    master - mean (287ms)  : 281, 293

    section Bailout
    This PR (7827) - mean (277ms)  : 274, 281
    master - mean (281ms)  : 271, 291

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (902ms)  : 856, 949
    master - mean (913ms)  : 859, 966

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

    section Bailout
    This PR (7827) - mean (271ms)  : 266, 276
    master - mean (274ms)  : 265, 283

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (886ms)  : 839, 934
    master - mean (899ms)  : 847, 950

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7827) - mean (269ms)  : 264, 274
    master - mean (271ms)  : 264, 279

    section Bailout
    This PR (7827) - mean (270ms)  : 266, 273
    master - mean (273ms)  : 264, 283

    section CallTarget+Inlining+NGEN
    This PR (7827) - mean (826ms)  : 808, 845
    master - mean (833ms)  : 805, 860

Loading

@pr-commenter
Copy link

pr-commenter bot commented Nov 14, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7827 compared to master:

  • 1 benchmarks are slower, with geometric mean 2.104
  • 5 benchmarks have fewer allocations
  • 4 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 ✔️ More allocations ⚠️

More allocations ⚠️ in #7827

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.01 KB 6.11 KB 96 B 1.60%
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑netcoreapp3.1 5.68 KB 5.72 KB 33 B 0.58%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11.2μs 50.8ns 203ns 0 0 0 5.5 KB
master StartStopWithChild netcoreapp3.1 13.6μs 69.1ns 317ns 0 0 0 5.68 KB
master StartStopWithChild net472 22.3μs 123ns 776ns 0.97 0.431 0.108 6.01 KB
#7827 StartStopWithChild net6.0 10.7μs 57.5ns 309ns 0 0 0 5.52 KB
#7827 StartStopWithChild netcoreapp3.1 13.7μs 65.4ns 277ns 0 0 0 5.72 KB
#7827 StartStopWithChild net472 21.6μs 111ns 521ns 0.864 0.216 0 6.11 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 926μs 53.1ns 199ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.05ms 2.65μs 9.9μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.2ms 61.9ns 240ns 0 0 0 3.31 KB
#7827 WriteAndFlushEnrichedTraces net6.0 932μs 83ns 299ns 0 0 0 2.7 KB
#7827 WriteAndFlushEnrichedTraces netcoreapp3.1 1.06ms 94ns 364ns 0 0 0 2.7 KB
#7827 WriteAndFlushEnrichedTraces net472 1.2ms 1.11μs 4.01μs 0 0 0 3.31 KB
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.08μs 5.6ns 26.8ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.37μs 6.78ns 28.8ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.01μs 0.574ns 2.22ns 0.192 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.2μs 7.78ns 30.2ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.01μs 33.1ns 128ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.58μs 5.15ns 19.9ns 0.721 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 321ns 1.8ns 11ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 402ns 2.07ns 10.2ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 297ns 0.084ns 0.303ns 0.0433 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.34μs 33.3ns 163ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.94μs 28.9ns 112ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.75μs 6.17ns 23.9ns 0.572 0 0 3.8 KB
#7827 AllCycleSimpleBody net6.0 1.09μs 0.684ns 2.56ns 0 0 0 1.22 KB
#7827 AllCycleSimpleBody netcoreapp3.1 1.38μs 7.39ns 39.8ns 0 0 0 1.2 KB
#7827 AllCycleSimpleBody net472 1.04μs 0.917ns 3.55ns 0.192 0 0 1.23 KB
#7827 AllCycleMoreComplexBody net6.0 7.02μs 35.9ns 176ns 0 0 0 4.72 KB
#7827 AllCycleMoreComplexBody netcoreapp3.1 9.14μs 3.84ns 14.4ns 0 0 0 4.62 KB
#7827 AllCycleMoreComplexBody net472 7.62μs 3.84ns 14.9ns 0.726 0 0 4.74 KB
#7827 ObjectExtractorSimpleBody net6.0 324ns 1.74ns 9.06ns 0 0 0 280 B
#7827 ObjectExtractorSimpleBody netcoreapp3.1 399ns 2.07ns 9.92ns 0 0 0 272 B
#7827 ObjectExtractorSimpleBody net472 301ns 0.0417ns 0.162ns 0.044 0 0 281 B
#7827 ObjectExtractorMoreComplexBody net6.0 6.34μs 30.8ns 127ns 0 0 0 3.78 KB
#7827 ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 33.7ns 130ns 0 0 0 3.69 KB
#7827 ObjectExtractorMoreComplexBody net472 6.85μs 12.5ns 48.4ns 0.582 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 75.4μs 343ns 1.33μs 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.9μs 220ns 823ns 0 0 0 32.4 KB
master EncodeArgs net472 109μs 11.6ns 43.5ns 4.88 0 0 32.51 KB
master EncodeLegacyArgs net6.0 146μs 218ns 844ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 199μs 170ns 659ns 0 0 0 2.15 KB
master EncodeLegacyArgs net472 263μs 23.8ns 92.2ns 0 0 0 2.17 KB
#7827 EncodeArgs net6.0 77.4μs 372ns 1.49μs 0 0 0 32.4 KB
#7827 EncodeArgs netcoreapp3.1 97.7μs 142ns 550ns 0 0 0 32.4 KB
#7827 EncodeArgs net472 109μs 17.1ns 66.2ns 4.92 0 0 32.5 KB
#7827 EncodeLegacyArgs net6.0 143μs 180ns 698ns 0 0 0 2.14 KB
#7827 EncodeLegacyArgs netcoreapp3.1 199μs 275ns 1.06μs 0 0 0 2.14 KB
#7827 EncodeLegacyArgs net472 262μs 39ns 151ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7827

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.104 408,796.27 860,024.50

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 393μs 118ns 427ns 0 0 0 4.56 KB
master RunWafRealisticBenchmark netcoreapp3.1 409μs 112ns 404ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 428μs 56.9ns 220ns 0 0 0 4.68 KB
master RunWafRealisticBenchmarkWithAttack net6.0 285μs 48.4ns 187ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 678μs 11.1μs 111μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 310μs 35.7ns 138ns 0 0 0 2.29 KB
#7827 RunWafRealisticBenchmark net6.0 395μs 164ns 592ns 0 0 0 4.55 KB
#7827 RunWafRealisticBenchmark netcoreapp3.1 779μs 15.3μs 153μs 0 0 0 4.48 KB
#7827 RunWafRealisticBenchmark net472 433μs 60.8ns 236ns 0 0 0 4.66 KB
#7827 RunWafRealisticBenchmarkWithAttack net6.0 285μs 23.8ns 82.6ns 0 0 0 2.24 KB
#7827 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 708μs 3.57μs 16.4μs 0 0 0 2.22 KB
#7827 RunWafRealisticBenchmarkWithAttack net472 308μs 22.8ns 82.3ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61.3μs 127ns 491ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.5μs 317ns 1.55μs 0 0 0 17.42 KB
master SendRequest net472 0.00768ns 0.00289ns 0.0112ns 0 0 0 0 b
#7827 SendRequest net6.0 61.4μs 285ns 1.06μs 0 0 0 14.52 KB
#7827 SendRequest netcoreapp3.1 71.3μs 91.6ns 330ns 0 0 0 17.42 KB
#7827 SendRequest net472 0.0117ns 0.00342ns 0.0132ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7827

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 48 B 47 B -1 B -2.08%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 3 B 2 B -1 B -33.33%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 7 B 2 B -5 B -71.43%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.91ms 5.91μs 22.1μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.05ms 8.75μs 32.7μs 0 0 0 640 KB
master OriginalCharSlice net472 2.66ms 629ns 2.27μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.41ms 221ns 854ns 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.73ms 245ns 850ns 0 0 0 1 B
master OptimizedCharSlice net472 1.98ms 422ns 1.58μs 0 0 0 73 B
master OptimizedCharSliceWithPool net6.0 822μs 67.2ns 260ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 827μs 63.5ns 229ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.14ms 130ns 488ns 0 0 0 48 B
#7827 OriginalCharSlice net6.0 1.92ms 521ns 1.88μs 0 0 0 640.01 KB
#7827 OriginalCharSlice netcoreapp3.1 2.09ms 3.81μs 13.7μs 0 0 0 640 KB
#7827 OriginalCharSlice net472 2.73ms 397ns 1.43μs 100 0 0 641.95 KB
#7827 OptimizedCharSlice net6.0 1.43ms 146ns 546ns 0 0 0 2 B
#7827 OptimizedCharSlice netcoreapp3.1 1.78ms 479ns 1.85μs 0 0 0 1 B
#7827 OptimizedCharSlice net472 1.94ms 502ns 1.88μs 0 0 0 73 B
#7827 OptimizedCharSliceWithPool net6.0 803μs 39.9ns 154ns 0 0 0 2 B
#7827 OptimizedCharSliceWithPool netcoreapp3.1 803μs 93.6ns 363ns 0 0 0 0 b
#7827 OptimizedCharSliceWithPool net472 1.13ms 88.3ns 342ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7827

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 56.32 KB 55.89 KB -427 B -0.76%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 719μs 4.05μs 28.9μs 0 0 0 41.77 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 692μs 3.85μs 24.4μs 0 0 0 41.89 KB
master WriteAndFlushEnrichedTraces net472 895μs 2.42μs 9.05μs 8.33 0 0 56.32 KB
#7827 WriteAndFlushEnrichedTraces net6.0 700μs 684ns 2.65μs 0 0 0 41.81 KB
#7827 WriteAndFlushEnrichedTraces netcoreapp3.1 669μs 3.12μs 24.6μs 0 0 0 42.01 KB
#7827 WriteAndFlushEnrichedTraces net472 929μs 3.19μs 12.4μs 4.46 0 0 55.89 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.87μs 9.43ns 43.2ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.62μs 8.37ns 32.4ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.74μs 3.82ns 14.8ns 0.15 0.0137 0 987 B
#7827 ExecuteNonQuery net6.0 1.87μs 5.11ns 19.1ns 0 0 0 1.02 KB
#7827 ExecuteNonQuery netcoreapp3.1 2.79μs 12.5ns 48.5ns 0 0 0 1.02 KB
#7827 ExecuteNonQuery net472 2.74μs 2.05ns 7.94ns 0.151 0.0137 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.74μs 7.62ns 29.5ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.23μs 10.9ns 47.5ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.68μs 4.13ns 16ns 0.165 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.75μs 8.79ns 39.3ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.47μs 8.41ns 32.6ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.85μs 3.8ns 14.7ns 0.172 0 0 1.1 KB
#7827 CallElasticsearch net6.0 1.7μs 8.85ns 42.4ns 0 0 0 1.03 KB
#7827 CallElasticsearch netcoreapp3.1 2.32μs 11.4ns 48.2ns 0 0 0 1.03 KB
#7827 CallElasticsearch net472 3.49μs 2.93ns 11.4ns 0.157 0 0 1.04 KB
#7827 CallElasticsearchAsync net6.0 1.8μs 0.364ns 1.41ns 0 0 0 1.01 KB
#7827 CallElasticsearchAsync netcoreapp3.1 2.51μs 5.88ns 22.8ns 0 0 0 1.08 KB
#7827 CallElasticsearchAsync net472 3.6μs 1.67ns 6.45ns 0.16 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.93μs 6.13ns 23.7ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.49μs 9ns 34.9ns 0 0 0 952 B
master ExecuteAsync net472 2.65μs 1.75ns 6.78ns 0.133 0 0 915 B
#7827 ExecuteAsync net6.0 1.92μs 8.96ns 34.7ns 0 0 0 952 B
#7827 ExecuteAsync netcoreapp3.1 2.47μs 6.72ns 26ns 0 0 0 952 B
#7827 ExecuteAsync net472 2.78μs 1.13ns 4.39ns 0.14 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.91μs 20.1ns 75.3ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.64μs 26ns 101ns 0 0 0 2.9 KB
master SendAsync net472 12.1μs 8.02ns 31.1ns 0.483 0 0 3.18 KB
#7827 SendAsync net6.0 6.94μs 10.7ns 41.6ns 0 0 0 2.36 KB
#7827 SendAsync netcoreapp3.1 8.76μs 30.8ns 119ns 0 0 0 2.9 KB
#7827 SendAsync net472 12.3μs 6.25ns 23.4ns 0.489 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7827

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 42.7 KB 44.04 KB 1.34 KB 3.15%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 255.46 KB 257.76 KB 2.3 KB 0.90%

Fewer allocations 🎉 in #7827

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.64 KB 43.37 KB -272 B -0.62%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 46.1μs 270ns 2.22μs 0 0 0 43.64 KB
master StringConcatBenchmark netcoreapp3.1 50.1μs 291ns 2.29μs 0 0 0 42.7 KB
master StringConcatBenchmark net472 56.7μs 297ns 1.39μs 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 490μs 2.3μs 9.22μs 0 0 0 278.04 KB
master StringConcatAspectBenchmark netcoreapp3.1 506μs 2.28μs 8.54μs 0 0 0 255.46 KB
master StringConcatAspectBenchmark net472 410μs 2.31μs 15μs 0 0 0 278.53 KB
#7827 StringConcatBenchmark net6.0 48.9μs 288ns 2.74μs 0 0 0 43.37 KB
#7827 StringConcatBenchmark netcoreapp3.1 46.1μs 213ns 798ns 0 0 0 44.04 KB
#7827 StringConcatBenchmark net472 57μs 297ns 1.55μs 0 0 0 57.34 KB
#7827 StringConcatAspectBenchmark net6.0 476μs 1.88μs 6.51μs 0 0 0 277.08 KB
#7827 StringConcatAspectBenchmark netcoreapp3.1 502μs 2.15μs 8.04μs 0 0 0 257.76 KB
#7827 StringConcatAspectBenchmark net472 408μs 2.22μs 13.5μs 0 0 0 277.37 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.59μs 14.1ns 68.9ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.65μs 14.7ns 56.9ns 0 0 0 1.7 KB
master EnrichedLog net472 4.19μs 3.84ns 14.9ns 0.248 0 0 1.64 KB
#7827 EnrichedLog net6.0 2.57μs 13.6ns 73.4ns 0 0 0 1.7 KB
#7827 EnrichedLog netcoreapp3.1 3.66μs 12.6ns 48.9ns 0 0 0 1.7 KB
#7827 EnrichedLog net472 4.06μs 3.65ns 14.1ns 0.243 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 124μs 55.1ns 199ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 129μs 208ns 807ns 0 0 0 4.31 KB
master EnrichedLog net472 169μs 296ns 1.14μs 0 0 0 4.52 KB
#7827 EnrichedLog net6.0 123μs 69.6ns 241ns 0 0 0 4.31 KB
#7827 EnrichedLog netcoreapp3.1 129μs 470ns 1.7μs 0 0 0 4.31 KB
#7827 EnrichedLog net472 168μs 155ns 599ns 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.16μs 21.6ns 80.7ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.77μs 15.2ns 58.7ns 0 0 0 2.26 KB
master EnrichedLog net472 7.55μs 7.72ns 29.9ns 0.301 0 0 2.08 KB
#7827 EnrichedLog net6.0 5.08μs 5.02ns 19.4ns 0 0 0 2.26 KB
#7827 EnrichedLog netcoreapp3.1 6.83μs 20.2ns 78.3ns 0 0 0 2.26 KB
#7827 EnrichedLog net472 7.66μs 12.2ns 47.4ns 0.305 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.93μs 9.28ns 35.9ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.61μs 4.31ns 16.7ns 0 0 0 1.2 KB
master SendReceive net472 3.11μs 1.28ns 4.62ns 0.185 0 0 1.2 KB
#7827 SendReceive net6.0 2.01μs 9.71ns 42.3ns 0 0 0 1.2 KB
#7827 SendReceive netcoreapp3.1 2.55μs 11.8ns 47.2ns 0 0 0 1.2 KB
#7827 SendReceive net472 3.09μs 1.06ns 4.09ns 0.182 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.33μs 10.9ns 42.3ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.75μs 8.04ns 30.1ns 0 0 0 1.63 KB
master EnrichedLog net472 6.96μs 6.28ns 24.3ns 0.313 0 0 2.03 KB
#7827 EnrichedLog net6.0 4.34μs 3.78ns 14.7ns 0 0 0 1.58 KB
#7827 EnrichedLog netcoreapp3.1 5.75μs 16.5ns 64ns 0 0 0 1.63 KB
#7827 EnrichedLog net472 6.71μs 6.14ns 23.8ns 0.301 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 786ns 3.71ns 14.4ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 1.01μs 4.75ns 18.4ns 0 0 0 576 B
master StartFinishSpan net472 943ns 0.246ns 0.92ns 0.09 0 0 578 B
master StartFinishScope net6.0 906ns 4.96ns 30.6ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.19μs 6.13ns 31.8ns 0 0 0 697 B
master StartFinishScope net472 1.16μs 0.86ns 3.33ns 0.104 0 0 658 B
#7827 StartFinishSpan net6.0 793ns 4.06ns 16.7ns 0 0 0 576 B
#7827 StartFinishSpan netcoreapp3.1 945ns 5.08ns 28.3ns 0 0 0 576 B
#7827 StartFinishSpan net472 945ns 0.195ns 0.73ns 0.0899 0 0 578 B
#7827 StartFinishScope net6.0 931ns 4.84ns 22.7ns 0 0 0 696 B
#7827 StartFinishScope netcoreapp3.1 1.2μs 4.69ns 18.2ns 0 0 0 696 B
#7827 StartFinishScope net472 1.13μs 0.541ns 1.95ns 0.102 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.06μs 5.65ns 28.2ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.47μs 6.59ns 23.8ns 0 0 0 696 B
master RunOnMethodBegin net472 1.46μs 0.443ns 1.6ns 0.102 0 0 658 B
#7827 RunOnMethodBegin net6.0 1.08μs 0.62ns 2.4ns 0 0 0 696 B
#7827 RunOnMethodBegin netcoreapp3.1 1.43μs 7.13ns 30.3ns 0 0 0 696 B
#7827 RunOnMethodBegin net472 1.48μs 1.95ns 7.54ns 0.102 0 0 658 B

// do one more loop to make sure everything is flushed
RequestFlush();
isFinalFlush = true;
continue;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might need to call the submit API inline here a final time

@github-actions github-actions bot added area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) area:data-streams-monitoring labels Nov 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:data-streams-monitoring area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants