Skip to content

Add support for RedisServiceStack v10#7903

Merged
andrewlock merged 6 commits intomasterfrom
andrew/service-stack-10
Dec 9, 2025
Merged

Add support for RedisServiceStack v10#7903
andrewlock merged 6 commits intomasterfrom
andrew/service-stack-10

Conversation

@andrewlock
Copy link
Member

Summary of changes

Adds support for RedisServiceStack v10

Reason for change

We want to support the latest releases

Implementation details

Bumped the numbers and 🤞

Test coverage

If the tests pass, we're good. Note that 10.0.0 dropped support for <.NET 6

@andrewlock andrewlock added the area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) label Dec 3, 2025
@andrewlock andrewlock requested review from a team as code owners December 3, 2025 18:06
@andrewlock andrewlock added area:automatic-instrumentation Automatic instrumentation managed C# code (Datadog.Trace.ClrProfiler.Managed) dependencies Pull requests that update a dependency file area:integrations labels Dec 3, 2025
Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a 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".

@datadog-datadog-prod-us1

This comment has been minimized.

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

dd-trace-dotnet-ci-bot bot commented Dec 3, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7903) 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.74 ± (75.80 - 76.37) ms75.68 ± (75.69 - 76.38) ms-0.1%
.NET Framework 4.8 - Bailout
duration80.15 ± (79.88 - 80.46) ms80.94 ± (80.74 - 81.57) ms+1.0%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1062.20 ± (1061.48 - 1069.31) ms1066.84 ± (1068.73 - 1078.13) ms+0.4%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms23.04 ± (22.95 - 23.13) ms22.87 ± (22.78 - 22.95) ms-0.8%
process.time_to_main_ms88.17 ± (87.83 - 88.51) ms88.18 ± (87.85 - 88.52) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.92 - 10.93) 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.73 ± (22.66 - 22.79) ms22.92 ± (22.85 - 23.00) ms+0.9%✅⬆️
process.time_to_main_ms88.37 ± (88.00 - 88.73) ms90.17 ± (89.77 - 90.58) ms+2.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.96 - 10.97) MB10.97 ± (10.96 - 10.97) MB+0.0%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms222.29 ± (221.00 - 223.58) ms223.47 ± (221.95 - 224.99) ms+0.5%✅⬆️
process.time_to_main_ms501.74 ± (500.55 - 502.92) ms501.67 ± (500.60 - 502.75) ms-0.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.88 ± (47.86 - 47.90) MB47.93 ± (47.91 - 47.95) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms21.51 ± (21.44 - 21.58) ms21.67 ± (21.60 - 21.73) ms+0.7%✅⬆️
process.time_to_main_ms75.70 ± (75.37 - 76.02) ms75.93 ± (75.60 - 76.27) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.62 - 10.63) MB10.63 ± (10.63 - 10.64) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.75 ± (21.69 - 21.82) ms21.52 ± (21.47 - 21.58) ms-1.1%
process.time_to_main_ms78.39 ± (78.08 - 78.70) ms77.42 ± (77.10 - 77.74) ms-1.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.67 ± (10.66 - 10.67) MB10.67 ± (10.67 - 10.67) MB+0.0%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms210.23 ± (209.09 - 211.37) ms211.57 ± (210.48 - 212.66) ms+0.6%✅⬆️
process.time_to_main_ms464.47 ± (463.58 - 465.36) ms469.62 ± (468.63 - 470.61) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.06 ± (48.04 - 48.09) MB48.13 ± (48.10 - 48.15) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.1%
.NET 8 - Baseline
process.internal_duration_ms19.77 ± (19.70 - 19.83) ms20.01 ± (19.94 - 20.07) ms+1.2%✅⬆️
process.time_to_main_ms74.66 ± (74.34 - 74.98) ms76.82 ± (76.48 - 77.16) ms+2.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.67 ± (7.67 - 7.68) MB7.66 ± (7.65 - 7.66) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.68 ± (19.64 - 19.73) ms19.86 ± (19.80 - 19.93) ms+0.9%✅⬆️
process.time_to_main_ms75.82 ± (75.53 - 76.11) ms76.30 ± (76.02 - 76.57) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.73 ± (7.72 - 7.73) MB7.70 ± (7.69 - 7.70) MB-0.4%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms192.72 ± (191.83 - 193.61) ms195.63 ± (194.67 - 196.59) ms+1.5%✅⬆️
process.time_to_main_ms451.85 ± (450.90 - 452.81) ms457.86 ± (456.84 - 458.88) ms+1.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.52 ± (36.48 - 36.55) MB36.50 ± (36.46 - 36.53) MB-0.1%
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
duration195.00 ± (195.06 - 196.03) ms194.43 ± (194.65 - 195.50) ms-0.3%
.NET Framework 4.8 - Bailout
duration197.55 ± (197.76 - 198.60) ms198.37 ± (198.39 - 199.28) ms+0.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1119.06 ± (1124.23 - 1133.69) ms1126.55 ± (1126.51 - 1135.45) ms+0.7%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms190.45 ± (190.00 - 190.91) ms189.88 ± (189.46 - 190.30) ms-0.3%
process.time_to_main_ms81.40 ± (81.12 - 81.69) ms81.85 ± (81.55 - 82.15) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.05 ± (16.03 - 16.07) MB16.12 ± (16.09 - 16.15) MB+0.4%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-0.4%
.NET Core 3.1 - Bailout
process.internal_duration_ms189.54 ± (189.06 - 190.03) ms191.36 ± (190.94 - 191.78) ms+1.0%✅⬆️
process.time_to_main_ms82.47 ± (82.28 - 82.65) ms83.18 ± (82.96 - 83.40) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.12 ± (16.10 - 16.15) MB16.14 ± (16.11 - 16.17) MB+0.1%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.2%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms403.40 ± (400.81 - 405.99) ms398.63 ± (396.45 - 400.81) ms-1.2%
process.time_to_main_ms477.20 ± (476.48 - 477.93) ms480.98 ± (480.22 - 481.74) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.96 ± (58.87 - 59.06) MB58.90 ± (58.80 - 59.00) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 30)+0.0%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms194.79 ± (194.38 - 195.21) ms194.87 ± (194.42 - 195.32) ms+0.0%✅⬆️
process.time_to_main_ms70.51 ± (70.30 - 70.72) ms70.67 ± (70.45 - 70.89) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.25 ± (16.15 - 16.34) MB16.37 ± (16.34 - 16.40) MB+0.8%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+1.3%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms194.26 ± (193.80 - 194.73) ms194.35 ± (193.89 - 194.81) ms+0.0%✅⬆️
process.time_to_main_ms71.46 ± (71.28 - 71.63) ms71.69 ± (71.53 - 71.86) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.37 ± (16.30 - 16.43) MB16.33 ± (16.23 - 16.43) MB-0.2%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (19 - 20)-1.1%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms413.14 ± (411.20 - 415.08) ms412.57 ± (410.50 - 414.63) ms-0.1%
process.time_to_main_ms445.63 ± (445.02 - 446.24) ms447.41 ± (446.71 - 448.11) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.39 ± (59.32 - 59.47) MB59.06 ± (58.92 - 59.19) MB-0.6%
runtime.dotnet.threads.count30 ± (30 - 30)30 ± (29 - 30)-0.2%
.NET 8 - Baseline
process.internal_duration_ms193.38 ± (192.95 - 193.81) ms193.72 ± (193.27 - 194.17) ms+0.2%✅⬆️
process.time_to_main_ms70.06 ± (69.86 - 70.27) ms69.90 ± (69.70 - 70.10) ms-0.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.72 ± (11.70 - 11.74) MB11.77 ± (11.75 - 11.80) MB+0.5%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.1%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms193.46 ± (192.98 - 193.93) ms192.94 ± (192.49 - 193.39) ms-0.3%
process.time_to_main_ms71.31 ± (71.11 - 71.50) ms71.13 ± (70.95 - 71.31) ms-0.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.77 ± (11.75 - 11.79) MB11.81 ± (11.78 - 11.83) MB+0.3%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.1%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms370.97 ± (369.47 - 372.48) ms371.00 ± (369.56 - 372.44) ms+0.0%✅⬆️
process.time_to_main_ms435.06 ± (434.35 - 435.76) ms434.57 ± (433.99 - 435.15) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.90 ± (47.87 - 47.93) MB47.95 ± (47.92 - 47.98) 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 (7903) - mean (76ms)  : 71, 81
    master - mean (76ms)  : 72, 80

    section Bailout
    This PR (7903) - mean (81ms)  : 75, 88
    master - mean (80ms)  : 76, 84

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (1,073ms)  : 1004, 1143
    master - mean (1,065ms)  : 1009, 1122

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 (7903) - mean (119ms)  : 112, 125
    master - mean (119ms)  : 112, 125

    section Bailout
    This PR (7903) - mean (121ms)  : 113, 129
    master - mean (119ms)  : 111, 126

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (767ms)  : 732, 802
    master - mean (757ms)  : 721, 794

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7903) - mean (105ms)  : 99, 111
    master - mean (104ms)  : 97, 112

    section Bailout
    This PR (7903) - mean (106ms)  : 99, 113
    master - mean (107ms)  : 102, 113

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (712ms)  : 685, 739
    master - mean (703ms)  : 678, 728

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7903) - mean (106ms)  : 99, 112
    master - mean (103ms)  : 96, 109

    section Bailout
    This PR (7903) - mean (105ms)  : 99, 110
    master - mean (104ms)  : 98, 109

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (693ms)  : 666, 721
    master - mean (678ms)  : 650, 705

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 (7903) - mean (195ms)  : 190, 200
    master - mean (196ms)  : 190, 201

    section Bailout
    This PR (7903) - mean (199ms)  : 195, 203
    master - mean (198ms)  : 194, 202

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (1,131ms)  : 1065, 1197
    master - mean (1,129ms)  : 1060, 1198

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 (7903) - mean (280ms)  : 274, 287
    master - mean (281ms)  : 273, 288

    section Bailout
    This PR (7903) - mean (283ms)  : 277, 290
    master - mean (280ms)  : 274, 287

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (921ms)  : 878, 965
    master - mean (920ms)  : 869, 971

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7903) - mean (274ms)  : 267, 280
    master - mean (274ms)  : 267, 280

    section Bailout
    This PR (7903) - mean (274ms)  : 268, 280
    master - mean (274ms)  : 266, 283

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (893ms)  : 854, 931
    master - mean (893ms)  : 862, 925

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7903) - mean (274ms)  : 266, 281
    master - mean (273ms)  : 265, 282

    section Bailout
    This PR (7903) - mean (274ms)  : 268, 280
    master - mean (275ms)  : 266, 283

    section CallTarget+Inlining+NGEN
    This PR (7903) - mean (837ms)  : 810, 864
    master - mean (839ms)  : 814, 864

Loading

@pr-commenter
Copy link

pr-commenter bot commented Dec 3, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7903 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.138
  • 1 benchmarks have fewer allocations
  • 3 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 ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11.2μs 62.3ns 369ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 13.8μs 71.7ns 329ns 0 0 0 5.71 KB
master StartStopWithChild net472 22.5μs 117ns 597ns 0.888 0.111 0 6 KB
#7903 StartStopWithChild net6.0 11.3μs 62.2ns 379ns 0 0 0 5.5 KB
#7903 StartStopWithChild netcoreapp3.1 14.2μs 67.8ns 288ns 0 0 0 5.7 KB
#7903 StartStopWithChild net472 21.4μs 120ns 778ns 0.855 0.321 0 6.01 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7903

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.26 KB 3.39 KB 128 B 3.92%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 1.27ms 162ns 604ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.37ms 148ns 574ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.72ms 157ns 608ns 0 0 0 3.26 KB
#7903 WriteAndFlushEnrichedTraces net6.0 1.25ms 312ns 1.21μs 0 0 0 2.7 KB
#7903 WriteAndFlushEnrichedTraces netcoreapp3.1 1.38ms 1.95μs 7.56μs 0 0 0 2.7 KB
#7903 WriteAndFlushEnrichedTraces net472 1.71ms 284ns 1.02μs 0 0 0 3.39 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.11μs 6.3ns 48.4ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.37μs 7.82ns 59.6ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 999ns 0.475ns 1.84ns 0.195 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.36μs 7.17ns 27.8ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.1μs 42.4ns 164ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.63μs 1.76ns 6.58ns 0.725 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 335ns 0.212ns 0.821ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 403ns 2.13ns 10.4ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 301ns 0.285ns 1.1ns 0.044 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.42μs 22.9ns 88.8ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.95μs 34.5ns 134ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.73μs 3.45ns 12.9ns 0.571 0 0 3.8 KB
#7903 AllCycleSimpleBody net6.0 1.09μs 5.93ns 33.6ns 0 0 0 1.22 KB
#7903 AllCycleSimpleBody netcoreapp3.1 1.39μs 7.94ns 62.5ns 0 0 0 1.2 KB
#7903 AllCycleSimpleBody net472 990ns 0.383ns 1.33ns 0.193 0 0 1.23 KB
#7903 AllCycleMoreComplexBody net6.0 7.23μs 38.1ns 198ns 0 0 0 4.72 KB
#7903 AllCycleMoreComplexBody netcoreapp3.1 9.03μs 46.6ns 219ns 0 0 0 4.62 KB
#7903 AllCycleMoreComplexBody net472 7.74μs 4.92ns 19.1ns 0.737 0 0 4.74 KB
#7903 ObjectExtractorSimpleBody net6.0 321ns 1.77ns 10.6ns 0 0 0 280 B
#7903 ObjectExtractorSimpleBody netcoreapp3.1 396ns 2.24ns 11.2ns 0 0 0 272 B
#7903 ObjectExtractorSimpleBody net472 299ns 0.0981ns 0.38ns 0.0436 0 0 281 B
#7903 ObjectExtractorMoreComplexBody net6.0 6.38μs 29.2ns 113ns 0 0 0 3.78 KB
#7903 ObjectExtractorMoreComplexBody netcoreapp3.1 7.8μs 37.9ns 165ns 0 0 0 3.69 KB
#7903 ObjectExtractorMoreComplexBody net472 6.72μs 1.55ns 5.79ns 0.572 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.9μs 32.6ns 122ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 99.1μs 458ns 1.77μs 0 0 0 32.4 KB
master EncodeArgs net472 108μs 24.1ns 93.4ns 4.88 0 0 32.5 KB
master EncodeLegacyArgs net6.0 146μs 13.6ns 47.2ns 0 0 0 2.14 KB
master EncodeLegacyArgs netcoreapp3.1 198μs 147ns 570ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 266μs 21.9ns 84.8ns 0 0 0 2.15 KB
#7903 EncodeArgs net6.0 76.8μs 25.4ns 98.2ns 0 0 0 32.4 KB
#7903 EncodeArgs netcoreapp3.1 97.6μs 293ns 1.1μs 0 0 0 32.4 KB
#7903 EncodeArgs net472 109μs 6.12ns 23.7ns 4.89 0 0 32.5 KB
#7903 EncodeLegacyArgs net6.0 148μs 110ns 396ns 0 0 0 2.14 KB
#7903 EncodeLegacyArgs netcoreapp3.1 201μs 356ns 1.38μs 0 0 0 2.14 KB
#7903 EncodeLegacyArgs net472 264μs 30.7ns 119ns 0 0 0 2.14 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 434μs 2.1μs 9.14μs 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 462μs 3.75μs 35.6μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 510μs 552ns 2.14μs 0 0 0 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 318μs 1.19μs 4.27μs 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 342μs 1.86μs 10.5μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 372μs 518ns 1.94μs 0 0 0 0 b
#7903 RunWafRealisticBenchmark net6.0 440μs 1.33μs 4.6μs 0 0 0 4.55 KB
#7903 RunWafRealisticBenchmark netcoreapp3.1 461μs 2.68μs 23.5μs 0 0 0 4.48 KB
#7903 RunWafRealisticBenchmark net472 499μs 575ns 2.15μs 0 0 0 0 b
#7903 RunWafRealisticBenchmarkWithAttack net6.0 319μs 1.47μs 5.89μs 0 0 0 2.24 KB
#7903 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 358μs 3.17μs 30.4μs 0 0 0 2.22 KB
#7903 RunWafRealisticBenchmarkWithAttack net472 373μs 343ns 1.28μs 0 0 0 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 85.8μs 431ns 1.83μs 0 0 0 18.97 KB
master SendRequest netcoreapp3.1 95.7μs 389ns 2.78μs 0 0 0 21.18 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#7903 SendRequest net6.0 82.7μs 267ns 1E+03ns 0 0 0 18.97 KB
#7903 SendRequest netcoreapp3.1 97.4μs 381ns 2.47μs 0 0 0 21.18 KB
#7903 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.97ms 1.01μs 3.66μs 0 0 0 640 KB
master OriginalCharSlice netcoreapp3.1 3.87ms 1.46μs 5.48μs 0 0 0 640.05 KB
master OriginalCharSlice net472 2.71ms 620ns 2.32μs 0 0 0 638.98 KB
master OptimizedCharSlice net6.0 1.42ms 3.97μs 15.4μs 0 0 0 0 b
master OptimizedCharSlice netcoreapp3.1 2.8ms 620ns 2.4μs 0 0 0 0 b
master OptimizedCharSlice net472 1.92ms 636ns 2.46μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 1.01ms 355ns 1.23μs 0 0 0 0 b
master OptimizedCharSliceWithPool netcoreapp3.1 1.87ms 1.3μs 5.03μs 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.14ms 1.17μs 4.52μs 0 0 0 0 b
#7903 OriginalCharSlice net6.0 1.89ms 1.47μs 5.5μs 0 0 0 640 KB
#7903 OriginalCharSlice netcoreapp3.1 4ms 778ns 2.91μs 0 0 0 640.05 KB
#7903 OriginalCharSlice net472 2.65ms 890ns 3.45μs 0 0 0 638.98 KB
#7903 OptimizedCharSlice net6.0 1.58ms 763ns 2.96μs 0 0 0 0 b
#7903 OptimizedCharSlice netcoreapp3.1 2.74ms 558ns 2.01μs 0 0 0 0 b
#7903 OptimizedCharSlice net472 1.9ms 735ns 2.85μs 0 0 0 0 b
#7903 OptimizedCharSliceWithPool net6.0 1.1ms 765ns 2.76μs 0 0 0 0 b
#7903 OptimizedCharSliceWithPool netcoreapp3.1 1.86ms 1.18μs 4.4μs 0 0 0 0 b
#7903 OptimizedCharSliceWithPool net472 1.17ms 375ns 1.4μs 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 More allocations ⚠️

Faster 🎉 in #7903

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 1.138 767,475.00 674,589.84

More allocations ⚠️ in #7903

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.95 KB 56.46 KB 510 B 0.91%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 758μs 3.79μs 17.8μs 0 0 0 41.63 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 723μs 1.4μs 4.85μs 0 0 0 41.9 KB
master WriteAndFlushEnrichedTraces net472 861μs 1.3μs 5.04μs 4.46 0 0 55.95 KB
#7903 WriteAndFlushEnrichedTraces net6.0 673μs 1.28μs 4.97μs 0 0 0 41.81 KB
#7903 WriteAndFlushEnrichedTraces netcoreapp3.1 741μs 3.69μs 16.5μs 0 0 0 42.09 KB
#7903 WriteAndFlushEnrichedTraces net472 922μs 4.38μs 17μs 8.33 4.17 0 56.46 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.96μs 1.38ns 4.78ns 0 0 0 968 B
master ExecuteNonQuery netcoreapp3.1 2.53μs 7.46ns 28.9ns 0 0 0 960 B
master ExecuteNonQuery net472 2.8μs 6.61ns 25.6ns 0.138 0 0 931 B
#7903 ExecuteNonQuery net6.0 1.8μs 7.9ns 30.6ns 0 0 0 968 B
#7903 ExecuteNonQuery netcoreapp3.1 2.57μs 10.1ns 37.8ns 0 0 0 960 B
#7903 ExecuteNonQuery net472 2.81μs 3.64ns 12.6ns 0.14 0 0 931 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.72μs 5.31ns 19.9ns 0 0 0 952 B
master CallElasticsearch netcoreapp3.1 2.23μs 10.2ns 40.8ns 0 0 0 968 B
master CallElasticsearch net472 3.52μs 5.58ns 21.6ns 0.141 0 0 955 B
master CallElasticsearchAsync net6.0 1.71μs 7.97ns 30.9ns 0 0 0 928 B
master CallElasticsearchAsync netcoreapp3.1 2.38μs 6.99ns 27.1ns 0 0 0 1.02 KB
master CallElasticsearchAsync net472 3.58μs 3.78ns 14.7ns 0.16 0 0 1.01 KB
#7903 CallElasticsearch net6.0 1.66μs 8.3ns 34.2ns 0 0 0 952 B
#7903 CallElasticsearch netcoreapp3.1 2.29μs 8.94ns 34.6ns 0 0 0 968 B
#7903 CallElasticsearch net472 3.58μs 4.82ns 18.7ns 0.142 0 0 955 B
#7903 CallElasticsearchAsync net6.0 1.75μs 7.35ns 28.5ns 0 0 0 928 B
#7903 CallElasticsearchAsync netcoreapp3.1 2.5μs 6.17ns 22.2ns 0 0 0 1.02 KB
#7903 CallElasticsearchAsync net472 3.56μs 1.33ns 5.14ns 0.143 0 0 1.01 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.89μs 1.44ns 5.59ns 0 0 0 896 B
master ExecuteAsync netcoreapp3.1 2.36μs 3.36ns 12.6ns 0 0 0 896 B
master ExecuteAsync net472 2.57μs 1.25ns 4.84ns 0.129 0 0 858 B
#7903 ExecuteAsync net6.0 1.86μs 0.726ns 2.72ns 0 0 0 896 B
#7903 ExecuteAsync netcoreapp3.1 2.45μs 7.75ns 30ns 0 0 0 896 B
#7903 ExecuteAsync net472 2.58μs 2.68ns 10ns 0.129 0 0 858 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 7.01μs 15ns 56.2ns 0 0 0 2.29 KB
master SendAsync netcoreapp3.1 8.59μs 15.9ns 57.4ns 0 0 0 2.83 KB
master SendAsync net472 11.8μs 4.45ns 16.6ns 0.469 0 0 3.08 KB
#7903 SendAsync net6.0 7.02μs 20.3ns 78.8ns 0 0 0 2.29 KB
#7903 SendAsync netcoreapp3.1 8.35μs 22.1ns 85.8ns 0 0 0 2.83 KB
#7903 SendAsync net472 11.8μs 9.39ns 36.4ns 0.472 0 0 3.08 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7903

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 257.18 KB 271.69 KB 14.51 KB 5.64%

Fewer allocations 🎉 in #7903

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 261.36 KB 247.08 KB -14.28 KB -5.46%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 44.4μs 223ns 1.05μs 0 0 0 42.51 KB
master StringConcatBenchmark netcoreapp3.1 57.3μs 867ns 8.62μs 0 0 0 42.54 KB
master StringConcatBenchmark net472 57.7μs 185ns 693ns 0 0 0 49.15 KB
master StringConcatAspectBenchmark net6.0 511μs 1.83μs 6.59μs 0 0 0 257.18 KB
master StringConcatAspectBenchmark netcoreapp3.1 519μs 2.16μs 7.78μs 0 0 0 261.36 KB
master StringConcatAspectBenchmark net472 410μs 2.15μs 10.3μs 0 0 0 270.34 KB
#7903 StringConcatBenchmark net6.0 43.5μs 225ns 1.03μs 0 0 0 42.51 KB
#7903 StringConcatBenchmark netcoreapp3.1 56.3μs 835ns 8.22μs 0 0 0 42.54 KB
#7903 StringConcatBenchmark net472 58.2μs 239ns 894ns 0 0 0 49.15 KB
#7903 StringConcatAspectBenchmark net6.0 467μs 2.06μs 7.71μs 0 0 0 271.69 KB
#7903 StringConcatAspectBenchmark netcoreapp3.1 457μs 5.92μs 58.6μs 0 0 0 247.08 KB
#7903 StringConcatAspectBenchmark net472 411μs 2.34μs 20.6μs 0 0 0 270.34 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.75μs 1.76ns 6.36ns 0 0 0 1.69 KB
master EnrichedLog netcoreapp3.1 3.55μs 2.91ns 11.3ns 0 0 0 1.7 KB
master EnrichedLog net472 3.85μs 2.41ns 9.35ns 0.248 0 0 1.6 KB
#7903 EnrichedLog net6.0 2.74μs 14.5ns 70.8ns 0 0 0 1.69 KB
#7903 EnrichedLog netcoreapp3.1 3.56μs 18.4ns 86.1ns 0 0 0 1.7 KB
#7903 EnrichedLog net472 3.88μs 4ns 15.5ns 0.251 0 0 1.6 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 115ns 447ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 131μs 475ns 1.84μs 0 0 0 4.31 KB
master EnrichedLog net472 169μs 150ns 582ns 0 0 0 4.51 KB
#7903 EnrichedLog net6.0 129μs 420ns 1.63μs 0 0 0 4.31 KB
#7903 EnrichedLog netcoreapp3.1 128μs 320ns 1.11μs 0 0 0 4.31 KB
#7903 EnrichedLog net472 166μs 39.1ns 146ns 0 0 0 4.51 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 12.5ns 48.4ns 0 0 0 2.24 KB
master EnrichedLog netcoreapp3.1 6.82μs 23.6ns 91.5ns 0 0 0 2.26 KB
master EnrichedLog net472 7.51μs 7.48ns 28ns 0.299 0 0 2.05 KB
#7903 EnrichedLog net6.0 5.25μs 5.62ns 21ns 0 0 0 2.24 KB
#7903 EnrichedLog netcoreapp3.1 7.14μs 12.8ns 49.6ns 0 0 0 2.26 KB
#7903 EnrichedLog net472 7.74μs 7.39ns 28.6ns 0.31 0 0 2.05 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 8.71ns 33.7ns 0 0 0 1.12 KB
master SendReceive netcoreapp3.1 2.6μs 10ns 38.8ns 0 0 0 1.14 KB
master SendReceive net472 2.97μs 1.77ns 6.85ns 0.177 0 0 1.12 KB
#7903 SendReceive net6.0 1.95μs 3.37ns 13.1ns 0 0 0 1.12 KB
#7903 SendReceive netcoreapp3.1 2.61μs 13ns 59.4ns 0 0 0 1.14 KB
#7903 SendReceive net472 2.92μs 1.49ns 5.78ns 0.173 0 0 1.12 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.49μs 7.05ns 27.3ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.52μs 8.96ns 34.7ns 0 0 0 1.63 KB
master EnrichedLog net472 6.51μs 12ns 46.4ns 0.291 0 0 2.03 KB
#7903 EnrichedLog net6.0 4.58μs 12ns 43.1ns 0 0 0 1.58 KB
#7903 EnrichedLog netcoreapp3.1 5.6μs 17.7ns 68.4ns 0 0 0 1.63 KB
#7903 EnrichedLog net472 6.63μs 14.7ns 56.9ns 0.298 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 774ns 3.58ns 14.3ns 0 0 0 520 B
master StartFinishSpan netcoreapp3.1 970ns 4.65ns 19.2ns 0 0 0 520 B
master StartFinishSpan net472 943ns 0.61ns 2.36ns 0.0801 0 0 522 B
master StartFinishScope net6.0 923ns 4.66ns 19.8ns 0 0 0 640 B
master StartFinishScope netcoreapp3.1 1.14μs 5.88ns 26.9ns 0 0 0 640 B
master StartFinishScope net472 1.15μs 1.15ns 4.47ns 0.0912 0 0 602 B
master StartFinishTwoScopes net6.0 1.77μs 8.59ns 35.4ns 0 0 0 1.19 KB
master StartFinishTwoScopes netcoreapp3.1 2.21μs 11.1ns 47ns 0 0 0 1.19 KB
master StartFinishTwoScopes net472 2.21μs 1.32ns 4.96ns 0.166 0 0 1.08 KB
#7903 StartFinishSpan net6.0 777ns 0.342ns 1.32ns 0 0 0 520 B
#7903 StartFinishSpan netcoreapp3.1 993ns 0.348ns 1.3ns 0 0 0 520 B
#7903 StartFinishSpan net472 916ns 0.0866ns 0.335ns 0.0828 0 0 522 B
#7903 StartFinishScope net6.0 918ns 4.4ns 17ns 0 0 0 640 B
#7903 StartFinishScope netcoreapp3.1 1.15μs 6.04ns 29.6ns 0 0 0 640 B
#7903 StartFinishScope net472 1.14μs 1.08ns 4.16ns 0.0912 0 0 602 B
#7903 StartFinishTwoScopes net6.0 1.76μs 9.3ns 48.3ns 0 0 0 1.19 KB
#7903 StartFinishTwoScopes netcoreapp3.1 2.21μs 11.5ns 55ns 0 0 0 1.19 KB
#7903 StartFinishTwoScopes net472 2.23μs 0.965ns 3.48ns 0.168 0 0 1.08 KB
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.07μs 1.04ns 4.02ns 0 0 0 640 B
master RunOnMethodBegin netcoreapp3.1 1.39μs 1.36ns 5.1ns 0 0 0 640 B
master RunOnMethodBegin net472 1.42μs 0.709ns 2.65ns 0.0926 0 0 602 B
#7903 RunOnMethodBegin net6.0 1.07μs 5.65ns 28.8ns 0 0 0 640 B
#7903 RunOnMethodBegin netcoreapp3.1 1.4μs 5.95ns 23ns 0 0 0 640 B
#7903 RunOnMethodBegin net472 1.44μs 0.317ns 1.23ns 0.0935 0 0 602 B

@andrewlock andrewlock force-pushed the andrew/service-stack-10 branch from fe70c43 to ca1a656 Compare December 9, 2025 09:33
@andrewlock andrewlock merged commit b0b1082 into master Dec 9, 2025
148 of 150 checks passed
@andrewlock andrewlock deleted the andrew/service-stack-10 branch December 9, 2025 11:18
@github-actions github-actions bot added this to the vNext-v3 milestone Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:automatic-instrumentation Automatic instrumentation managed C# code (Datadog.Trace.ClrProfiler.Managed) area:integrations area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants