Skip to content

Conversation

@andrewlock
Copy link
Member

@andrewlock andrewlock commented Oct 28, 2025

Summary of changes

Instead of exposing settings like ServiceVerion and Environment on TracerSettings, only expose them on MutableSettings

Reason for change

This is all part of the refactoring towards having TracerSettings being an immutable settings object, that's created once on app startup, and fixed for the lifetime. ServiceVerion and Environment currently delegate to the MutableSettings object stored on TracerSettings, but are going to move that elsewhere shortly so that consumers can subscribe to changes

Implementation details

For this PR, it's just a case of changing TracerSettings.XXX => TracerSettings.Mutable.XXX. A future PR will then subsequently "fix" these usages properly. This is just a small step to be able to remove the mutable properties from TracerSettings

Test coverage

Just a refactoring, covered by existing tests.

Other details

https://datadoghq.atlassian.net/browse/LANGPLAT-819

Part of a config stack

@pr-commenter
Copy link

pr-commenter bot commented Oct 28, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7723 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.132
  • 2 benchmarks are slower, with geometric mean 1.653
  • 6 benchmarks have fewer allocations
  • 8 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 ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.11 KB 6.06 KB -59 B -0.96%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11.1μs 56.6ns 271ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 13.6μs 68.9ns 308ns 0 0 0 5.69 KB
master StartStopWithChild net472 22.7μs 130ns 964ns 0.957 0.319 0 6.11 KB
#7723 StartStopWithChild net6.0 10.5μs 55.6ns 273ns 0 0 0 5.52 KB
#7723 StartStopWithChild netcoreapp3.1 13.4μs 71.6ns 365ns 0 0 0 5.71 KB
#7723 StartStopWithChild net472 21.6μs 114ns 547ns 0.978 0.326 0.109 6.06 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 935μs 171ns 618ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 158ns 590ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.2ms 710ns 2.75μs 0 0 0 3.31 KB
#7723 WriteAndFlushEnrichedTraces net6.0 935μs 198ns 766ns 0 0 0 2.71 KB
#7723 WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 395ns 1.53μs 0 0 0 2.7 KB
#7723 WriteAndFlushEnrichedTraces net472 1.23ms 1.4μs 5.4μ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.78ns 32.2ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.38μs 7.59ns 48ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.05μs 0.957ns 3.58ns 0.194 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 6.98μs 34.6ns 158ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 8.98μs 44.5ns 199ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.58μs 4.88ns 18.9ns 0.718 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 318ns 1.66ns 7.6ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 403ns 2.15ns 11.2ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 297ns 0.025ns 0.097ns 0.0434 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.28μs 29.4ns 114ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.89μs 30.3ns 113ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.7μs 3.66ns 14.2ns 0.57 0 0 3.8 KB
#7723 AllCycleSimpleBody net6.0 1.07μs 0.53ns 1.98ns 0 0 0 1.22 KB
#7723 AllCycleSimpleBody netcoreapp3.1 1.44μs 8ns 48ns 0 0 0 1.2 KB
#7723 AllCycleSimpleBody net472 1.05μs 0.712ns 2.76ns 0.191 0 0 1.23 KB
#7723 AllCycleMoreComplexBody net6.0 7.01μs 38.3ns 217ns 0 0 0 4.72 KB
#7723 AllCycleMoreComplexBody netcoreapp3.1 9.2μs 41ns 153ns 0 0 0 4.62 KB
#7723 AllCycleMoreComplexBody net472 7.69μs 1.66ns 5.76ns 0.729 0 0 4.74 KB
#7723 ObjectExtractorSimpleBody net6.0 313ns 1.7ns 9.61ns 0 0 0 280 B
#7723 ObjectExtractorSimpleBody netcoreapp3.1 393ns 2.22ns 14.9ns 0 0 0 272 B
#7723 ObjectExtractorSimpleBody net472 299ns 0.0215ns 0.0833ns 0.0436 0 0 281 B
#7723 ObjectExtractorMoreComplexBody net6.0 6.43μs 3.75ns 14.5ns 0 0 0 3.78 KB
#7723 ObjectExtractorMoreComplexBody netcoreapp3.1 7.9μs 38ns 152ns 0 0 0 3.69 KB
#7723 ObjectExtractorMoreComplexBody net472 6.67μs 2.16ns 8.38ns 0.57 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs‑net472 2.16 KB 2.17 KB 13 B 0.60%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 77.2μs 296ns 1.15μs 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 99.5μs 429ns 1.66μs 0 0 0 32.4 KB
master EncodeArgs net472 110μs 17.8ns 68.8ns 4.93 0 0 32.51 KB
master EncodeLegacyArgs net6.0 143μs 171ns 663ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 198μs 156ns 606ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 121ns 470ns 0 0 0 2.16 KB
#7723 EncodeArgs net6.0 75.5μs 229ns 857ns 0 0 0 32.4 KB
#7723 EncodeArgs netcoreapp3.1 98.1μs 183ns 707ns 0 0 0 32.4 KB
#7723 EncodeArgs net472 109μs 29.4ns 106ns 4.9 0 0 32.51 KB
#7723 EncodeLegacyArgs net6.0 143μs 27.7ns 107ns 0 0 0 2.15 KB
#7723 EncodeLegacyArgs netcoreapp3.1 199μs 226ns 875ns 0 0 0 2.14 KB
#7723 EncodeLegacyArgs net472 265μs 19ns 73.5ns 0 0 0 2.17 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7723

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.354 304,112.20 715,910.64

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 393μs 123ns 476ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 424μs 398ns 1.54μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 430μs 53.6ns 208ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 283μs 60.7ns 235ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 304μs 73ns 283ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 309μs 71.6ns 277ns 0 0 0 2.29 KB
#7723 RunWafRealisticBenchmark net6.0 394μs 71.8ns 278ns 0 0 0 4.56 KB
#7723 RunWafRealisticBenchmark netcoreapp3.1 413μs 206ns 769ns 0 0 0 4.48 KB
#7723 RunWafRealisticBenchmark net472 436μs 61.8ns 239ns 0 0 0 4.66 KB
#7723 RunWafRealisticBenchmarkWithAttack net6.0 287μs 54.6ns 211ns 0 0 0 2.24 KB
#7723 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 682μs 11.3μs 112μs 0 0 0 2.22 KB
#7723 RunWafRealisticBenchmarkWithAttack net472 310μs 32ns 124ns 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.9μs 102ns 381ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 70.8μs 137ns 493ns 0 0 0 17.42 KB
master SendRequest net472 0.00303ns 0.00128ns 0.00495ns 0 0 0 0 b
#7723 SendRequest net6.0 61μs 90.4ns 338ns 0 0 0 14.52 KB
#7723 SendRequest netcoreapp3.1 71.9μs 80.9ns 292ns 0 0 0 17.42 KB
#7723 SendRequest net472 0.00126ns 0.001ns 0.00388ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Faster 🎉 More allocations ⚠️

Faster 🎉 in #7723

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1.132 900,653.12 795,895.43

More allocations ⚠️ in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 0 b 73 B 73 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 0 b 47 B 47 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 4 B 7 B 3 B 75.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 3 B 4 B 1 B 33.33%

Fewer allocations 🎉 in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 1 B 0 b -1 B -100.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.93ms 1.87μs 7.24μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.12ms 1.16μs 4.19μs 0 0 0 640 KB
master OriginalCharSlice net472 2.65ms 170ns 660ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.37ms 69.3ns 259ns 0 0 0 4 B
master OptimizedCharSlice netcoreapp3.1 1.7ms 2.5μs 9.7μs 0 0 0 1 B
master OptimizedCharSlice net472 2.02ms 245ns 949ns 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 901μs 24.6ns 91.9ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 821μs 117ns 453ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.13ms 74.6ns 289ns 0 0 0 0 b
#7723 OriginalCharSlice net6.0 1.91ms 4.25μs 15.9μs 0 0 0 640 KB
#7723 OriginalCharSlice netcoreapp3.1 2.19ms 4.78μs 16.5μs 0 0 0 640 KB
#7723 OriginalCharSlice net472 2.67ms 248ns 895ns 100 0 0 641.95 KB
#7723 OptimizedCharSlice net6.0 1.35ms 216ns 838ns 0 0 0 7 B
#7723 OptimizedCharSlice netcoreapp3.1 1.67ms 377ns 1.46μs 0 0 0 1 B
#7723 OptimizedCharSlice net472 1.95ms 122ns 457ns 0 0 0 73 B
#7723 OptimizedCharSliceWithPool net6.0 796μs 28.8ns 112ns 0 0 0 4 B
#7723 OptimizedCharSliceWithPool netcoreapp3.1 797μs 83.4ns 323ns 0 0 0 0 b
#7723 OptimizedCharSliceWithPool net472 1.14ms 79.4ns 307ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Slower ⚠️ More allocations ⚠️

Slower ⚠️ in #7723

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 1.160 646,227.73 749,864.79

More allocations ⚠️ in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.71 KB 42.26 KB 552 B 1.32%

Fewer allocations 🎉 in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 56.49 KB 56.18 KB -307 B -0.54%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 654μs 3.22μs 14.4μs 0 0 0 41.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 686μs 864ns 3.23μs 0 0 0 41.88 KB
master WriteAndFlushEnrichedTraces net472 936μs 3.51μs 13.6μs 8.33 0 0 56.49 KB
#7723 WriteAndFlushEnrichedTraces net6.0 750μs 831ns 3.22μs 0 0 0 42.26 KB
#7723 WriteAndFlushEnrichedTraces netcoreapp3.1 720μs 1.72μs 6.2μs 0 0 0 42 KB
#7723 WriteAndFlushEnrichedTraces net472 876μs 2.08μs 7.78μs 8.33 0 0 56.18 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.97μs 2.57ns 9.95ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.66μs 3.75ns 14.5ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.91μs 5.2ns 20.2ns 0.146 0.0146 0 987 B
#7723 ExecuteNonQuery net6.0 1.82μs 7.56ns 29.3ns 0 0 0 1.02 KB
#7723 ExecuteNonQuery netcoreapp3.1 2.65μs 5.14ns 19.9ns 0 0 0 1.02 KB
#7723 ExecuteNonQuery net472 2.82μs 3.4ns 12.7ns 0.154 0.014 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.66μs 8.52ns 40ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.21μs 9.87ns 38.2ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.61μs 3.37ns 12.6ns 0.163 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.93μs 4.94ns 19.1ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.39μs 10.8ns 41.8ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.71μs 6.48ns 25.1ns 0.165 0 0 1.1 KB
#7723 CallElasticsearch net6.0 1.75μs 7.95ns 30.8ns 0 0 0 1.03 KB
#7723 CallElasticsearch netcoreapp3.1 2.14μs 10.7ns 46.5ns 0 0 0 1.03 KB
#7723 CallElasticsearch net472 3.65μs 4.88ns 18.9ns 0.165 0 0 1.04 KB
#7723 CallElasticsearchAsync net6.0 1.92μs 4.95ns 19.2ns 0 0 0 1.01 KB
#7723 CallElasticsearchAsync netcoreapp3.1 2.42μs 8.68ns 31.3ns 0 0 0 1.08 KB
#7723 CallElasticsearchAsync net472 3.95μs 2.75ns 10.7ns 0.157 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.91μs 7.12ns 27.6ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.37μs 9.45ns 35.4ns 0 0 0 952 B
master ExecuteAsync net472 2.54μs 0.933ns 3.61ns 0.139 0 0 915 B
#7723 ExecuteAsync net6.0 1.92μs 1.78ns 6.67ns 0 0 0 952 B
#7723 ExecuteAsync netcoreapp3.1 2.51μs 5.04ns 19.5ns 0 0 0 952 B
#7723 ExecuteAsync net472 2.63μs 1.76ns 6.84ns 0.144 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 7.14μs 5.72ns 22.1ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.43μs 15.9ns 61.4ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 10.2ns 38.3ns 0.492 0 0 3.18 KB
#7723 SendAsync net6.0 6.94μs 16.2ns 60.6ns 0 0 0 2.36 KB
#7723 SendAsync netcoreapp3.1 8.66μs 9ns 34.9ns 0 0 0 2.9 KB
#7723 SendAsync net472 12.1μs 12.9ns 49.9ns 0.484 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 256.22 KB 278.22 KB 22.01 KB 8.59%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 258.63 KB 273.3 KB 14.66 KB 5.67%

Fewer allocations 🎉 in #7723

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 44.39 KB 43.85 KB -544 B -1.23%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 286.72 KB 278.53 KB -8.19 KB -2.86%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 65.54 KB 57.34 KB -8.19 KB -12.50%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 49.4μs 779ns 7.72μs 0 0 0 44.39 KB
master StringConcatBenchmark netcoreapp3.1 49.5μs 271ns 2.16μs 0 0 0 42.83 KB
master StringConcatBenchmark net472 57μs 100ns 348ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 435μs 1.38μs 4.78μs 0 0 0 256.22 KB
master StringConcatAspectBenchmark netcoreapp3.1 507μs 1.02μs 4.43μs 0 0 0 258.63 KB
master StringConcatAspectBenchmark net472 400μs 1.84μs 7.12μs 0 0 0 286.72 KB
#7723 StringConcatBenchmark net6.0 43.5μs 218ns 927ns 0 0 0 43.85 KB
#7723 StringConcatBenchmark netcoreapp3.1 48.5μs 261ns 1.33μs 0 0 0 42.71 KB
#7723 StringConcatBenchmark net472 58.3μs 115ns 413ns 0 0 0 57.34 KB
#7723 StringConcatAspectBenchmark net6.0 482μs 2μs 6.91μs 0 0 0 278.22 KB
#7723 StringConcatAspectBenchmark netcoreapp3.1 524μs 2.07μs 7.17μs 0 0 0 273.3 KB
#7723 StringConcatAspectBenchmark net472 406μs 1.86μs 7.22μs 0 0 0 278.53 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.58μs 11.9ns 47.6ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.61μs 17.4ns 75.9ns 0 0 0 1.7 KB
master EnrichedLog net472 3.98μs 4.88ns 18.9ns 0.258 0 0 1.64 KB
#7723 EnrichedLog net6.0 2.64μs 12.5ns 48.5ns 0 0 0 1.7 KB
#7723 EnrichedLog netcoreapp3.1 3.59μs 13ns 50.5ns 0 0 0 1.7 KB
#7723 EnrichedLog net472 3.99μs 3.57ns 12.9ns 0.258 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 123μs 334ns 1.29μs 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 128μs 275ns 990ns 0 0 0 4.31 KB
master EnrichedLog net472 173μs 395ns 1.53μs 0 0 0 4.52 KB
#7723 EnrichedLog net6.0 125μs 104ns 402ns 0 0 0 4.31 KB
#7723 EnrichedLog netcoreapp3.1 129μs 190ns 683ns 0 0 0 4.31 KB
#7723 EnrichedLog net472 166μs 22.7ns 81.8ns 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.3μs 18ns 69.5ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.74μs 25.4ns 98.2ns 0 0 0 2.26 KB
master EnrichedLog net472 7.57μs 6.16ns 23.9ns 0.302 0 0 2.08 KB
#7723 EnrichedLog net6.0 5.12μs 5.22ns 20.2ns 0 0 0 2.26 KB
#7723 EnrichedLog netcoreapp3.1 6.88μs 16.4ns 63.3ns 0 0 0 2.26 KB
#7723 EnrichedLog net472 7.6μs 11.9ns 46.2ns 0.3 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.94μs 9.27ns 35.9ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.65μs 11.5ns 44.6ns 0 0 0 1.2 KB
master SendReceive net472 3.1μs 1.85ns 7.16ns 0.184 0 0 1.2 KB
#7723 SendReceive net6.0 1.99μs 0.392ns 1.42ns 0 0 0 1.2 KB
#7723 SendReceive netcoreapp3.1 2.61μs 5.87ns 22.7ns 0 0 0 1.2 KB
#7723 SendReceive net472 3.1μs 1.97ns 7.62ns 0.187 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.35μs 7.54ns 29.2ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.65μs 4.4ns 15.9ns 0 0 0 1.63 KB
master EnrichedLog net472 6.56μs 5.41ns 21ns 0.296 0 0 2.03 KB
#7723 EnrichedLog net6.0 4.28μs 17ns 65.7ns 0 0 0 1.58 KB
#7723 EnrichedLog netcoreapp3.1 5.55μs 14ns 54.2ns 0 0 0 1.63 KB
#7723 EnrichedLog net472 6.6μs 8.64ns 33.5ns 0.296 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 783ns 0.292ns 1.09ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 961ns 5.18ns 29.3ns 0 0 0 576 B
master StartFinishSpan net472 933ns 1.11ns 4.29ns 0.0893 0 0 578 B
master StartFinishScope net6.0 904ns 4.81ns 25.5ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.21μs 5.35ns 20.7ns 0 0 0 696 B
master StartFinishScope net472 1.12μs 0.561ns 2.17ns 0.102 0 0 658 B
#7723 StartFinishSpan net6.0 785ns 3.96ns 17.7ns 0 0 0 576 B
#7723 StartFinishSpan netcoreapp3.1 949ns 3.46ns 13.4ns 0 0 0 576 B
#7723 StartFinishSpan net472 964ns 0.418ns 1.45ns 0.0918 0 0 578 B
#7723 StartFinishScope net6.0 918ns 0.227ns 0.85ns 0 0 0 696 B
#7723 StartFinishScope netcoreapp3.1 1.19μs 3.53ns 13.2ns 0 0 0 696 B
#7723 StartFinishScope net472 1.17μs 0.241ns 0.933ns 0.099 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.51ns 28.1ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.46μs 3.1ns 12ns 0 0 0 696 B
master RunOnMethodBegin net472 1.46μs 1.29ns 4.82ns 0.103 0 0 658 B
#7723 RunOnMethodBegin net6.0 1.05μs 5.41ns 26ns 0 0 0 696 B
#7723 RunOnMethodBegin netcoreapp3.1 1.4μs 5.17ns 20ns 0 0 0 696 B
#7723 RunOnMethodBegin net472 1.52μs 0.983ns 3.68ns 0.0988 0 0 658 B

@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 8c472a5 to 8e19e3a Compare October 28, 2025 15:20
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from 60c7874 to c691a0e Compare October 28, 2025 15:20
@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 8e19e3a to 7940c31 Compare October 28, 2025 18:13
@andrewlock andrewlock requested review from a team as code owners October 28, 2025 18:13
@andrewlock andrewlock requested review from zacharycmontoya and removed request for a team October 28, 2025 18:13
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from c691a0e to a52caed Compare October 28, 2025 18:13
@datadog-datadog-prod-us1

This comment has been minimized.

Copy link
Member Author

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

Automated code review by Claude Code

This PR successfully refactors TracerSettings to remove mutable properties and require explicit access through MutableSettings. The changes are generally consistent and well-executed. I've identified a few specific issues below for consideration.

Copy link
Member Author

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

Automated code review by Claude Code

This PR successfully refactors TracerSettings to remove mutable properties and require explicit access through MutableSettings. The changes are generally consistent and well-executed.

andrewlock added a commit that referenced this pull request Oct 31, 2025
…ndows (#7721)

## Summary of changes

Enforces that you can't _change_ the `AgentUri` to be a UDS Uri if
you're on Windows

## Reason for change

The trace exporter doesn't work with UDS on Windows, so we have a check
in `TracerSettings` that disables the pipeline if we find this scenario.
However, user's can still _change_ the agent URI at runtime in code (😭).

We currently assume that the data pipeline won't be toggled at runtime
(we _do_ allow for reconfiguring it in general, but not for completely
removing or reintroducing). Changing this to allow the scenario would be
a pain, so instead this PR blocks you from setting a UDS URI in code if
you're on Windows.

The good news is that as far as I can tell, noone does this today, so
while _technically_ it could be considered a breaking change, I think
it's ok.

## Implementation details

- Throw an `ArgumentException` in the Datadog.Trace.Manual library, if
you're on Windows (or .NET FX) and you try to set a UDS agent URI (using
the same "detection" we do in `ExporterSettings`.
- Add a check in the Instrumentation of `Tracer.Configure()` to make
sure it hasn't slipped through. This could happen if a customer was
using an old version of the Datadog.Trace NuGet package with a newer
version of auto instrumentation.

Note that this adds two additional framework references for .NET Core
3.1+, to check if we're on Windows.

## Test coverage

Added an extra step to the manual instrumentation integration test to
confirm we throw

## Other details

https://datadoghq.atlassian.net/browse/LANGPLAT-819

Part of a config stack

- #7522
- #7525
- #7530
- #7532
- #7543
- #7544
- #7721 👈
- #7722
- #7695
- #7723
- #7724
@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 7940c31 to 2dfae3d Compare October 31, 2025 18:04
@andrewlock andrewlock requested review from a team as code owners October 31, 2025 18:04
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from a52caed to 36d5027 Compare October 31, 2025 18:04
andrewlock added a commit that referenced this pull request Nov 3, 2025
## Summary of changes

Add a helper for comparing `ReadOnlyDictionary<>` instances

## Reason for change

As part of the config work, we need to detect if tags have changed when
customers do a manual/remote config update. This helper makes it easy

## Implementation details

Added a `SequenceEqual` extension method.

Note that I used `SequenceEqual` because it _already_ exists in
_System.Linq_, but I could see an argument that it's too easy to use the
wrong one, and instead we could use a different name? `IsSameAs(other)`?

Also, I only wrote this for `ReadOnlyDictionary<>` because that's all we
need, it's what we use for all our setting dictionaries, and it will be
(a tiny bit) faster than making it `IDictionary<>`, but happy to change
if people feel strongly.

## Test coverage

Added unit tests

## Other details

https://datadoghq.atlassian.net/browse/LANGPLAT-819

Part of a config stack


- #7522
- #7525
- #7530
- #7532
- #7543
- #7544
- #7721
- #7722 👈
- #7695
- #7723
- #7724

---------

Co-authored-by: Steven Bouwkamp <[email protected]>
@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 2dfae3d to ea5edf6 Compare November 3, 2025 17:30
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from 36d5027 to 717fff8 Compare November 3, 2025 17:31
@dd-trace-dotnet-ci-bot
Copy link

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7723) 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
duration73.72 ± (73.69 - 74.28) ms73.66 ± (73.50 - 74.12) ms-0.1%
.NET Framework 4.8 - Bailout
duration77.69 ± (77.67 - 78.24) ms78.18 ± (78.32 - 79.07) ms+0.6%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1087.35 ± (1091.40 - 1101.80) ms1104.38 ± (1106.54 - 1117.30) ms+1.6%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.70 ± (22.63 - 22.77) ms23.18 ± (23.06 - 23.31) ms+2.1%✅⬆️
process.time_to_main_ms85.47 ± (85.15 - 85.79) ms89.81 ± (89.27 - 90.34) ms+5.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.88 ± (10.88 - 10.89) MB10.90 ± (10.90 - 10.90) MB+0.1%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.69 ± (22.62 - 22.76) ms22.58 ± (22.52 - 22.64) ms-0.5%
process.time_to_main_ms87.83 ± (87.36 - 88.29) ms86.88 ± (86.53 - 87.22) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.93 ± (10.92 - 10.93) MB10.94 ± (10.94 - 10.94) MB+0.1%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms218.03 ± (216.21 - 219.85) ms220.52 ± (218.93 - 222.12) ms+1.1%✅⬆️
process.time_to_main_ms542.79 ± (541.57 - 544.02) ms547.20 ± (545.96 - 548.44) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.58 ± (52.55 - 52.60) MB52.53 ± (52.50 - 52.55) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.6%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms21.69 ± (21.63 - 21.76) ms21.66 ± (21.59 - 21.72) ms-0.2%
process.time_to_main_ms75.39 ± (75.02 - 75.76) ms74.87 ± (74.53 - 75.21) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.58 ± (10.58 - 10.59) MB10.61 ± (10.61 - 10.62) MB+0.3%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.59 ± (21.52 - 21.66) ms21.47 ± (21.41 - 21.53) ms-0.6%
process.time_to_main_ms76.25 ± (75.90 - 76.60) ms75.08 ± (74.75 - 75.41) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.63 ± (10.62 - 10.63) MB10.66 ± (10.66 - 10.67) MB+0.3%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms204.93 ± (203.56 - 206.31) ms204.89 ± (203.54 - 206.23) ms-0.0%
process.time_to_main_ms509.36 ± (508.35 - 510.38) ms504.92 ± (504.02 - 505.82) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.80 ± (51.76 - 51.84) MB51.47 ± (51.43 - 51.51) MB-0.6%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.75 ± (19.66 - 19.84) ms19.77 ± (19.70 - 19.84) ms+0.1%✅⬆️
process.time_to_main_ms74.00 ± (73.53 - 74.47) ms74.17 ± (73.82 - 74.51) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.64 ± (7.64 - 7.65) MB-0.3%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.87 ± (19.80 - 19.94) ms19.77 ± (19.71 - 19.83) ms-0.5%
process.time_to_main_ms75.65 ± (75.26 - 76.05) ms75.01 ± (74.69 - 75.32) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.72 ± (7.72 - 7.73) MB7.71 ± (7.71 - 7.72) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms189.56 ± (188.70 - 190.42) ms188.76 ± (187.87 - 189.64) ms-0.4%
process.time_to_main_ms488.50 ± (487.51 - 489.49) ms481.28 ± (480.30 - 482.26) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed39.02 ± (38.97 - 39.06) MB38.74 ± (38.70 - 38.77) MB-0.7%
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
duration191.78 ± (191.38 - 192.19) ms191.35 ± (191.67 - 192.60) ms-0.2%
.NET Framework 4.8 - Bailout
duration197.02 ± (196.76 - 197.72) ms195.45 ± (195.30 - 195.86) ms-0.8%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1154.27 ± (1156.92 - 1165.32) ms1156.15 ± (1160.43 - 1170.12) ms+0.2%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms186.75 ± (186.38 - 187.12) ms186.71 ± (186.30 - 187.13) ms-0.0%
process.time_to_main_ms81.19 ± (80.97 - 81.41) ms80.18 ± (79.99 - 80.38) ms-1.2%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.07 ± (16.04 - 16.10) MB16.07 ± (16.04 - 16.10) MB+0.0%✅⬆️
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (20 - 20)+0.6%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms186.46 ± (186.18 - 186.74) ms186.65 ± (186.31 - 186.98) ms+0.1%✅⬆️
process.time_to_main_ms82.11 ± (81.92 - 82.29) ms81.40 ± (81.25 - 81.54) ms-0.9%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.15 ± (16.12 - 16.18) MB16.17 ± (16.13 - 16.20) MB+0.1%✅⬆️
runtime.dotnet.threads.count21 ± (20 - 21)20 ± (20 - 21)-0.3%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms400.09 ± (397.55 - 402.63) ms398.14 ± (395.35 - 400.92) ms-0.5%
process.time_to_main_ms516.23 ± (515.54 - 516.93) ms515.74 ± (515.00 - 516.48) ms-0.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed63.49 ± (63.35 - 63.62) MB62.99 ± (62.84 - 63.15) MB-0.8%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms189.54 ± (189.19 - 189.90) ms190.23 ± (189.85 - 190.60) ms+0.4%✅⬆️
process.time_to_main_ms69.61 ± (69.45 - 69.77) ms69.66 ± (69.49 - 69.84) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.77 ± (15.60 - 15.94) MB15.96 ± (15.79 - 16.12) MB+1.2%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.7%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms189.86 ± (189.57 - 190.15) ms188.99 ± (188.69 - 189.29) ms-0.5%
process.time_to_main_ms70.50 ± (70.39 - 70.61) ms70.30 ± (70.16 - 70.44) ms-0.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.15 ± (16.01 - 16.29) MB16.05 ± (15.90 - 16.21) MB-0.6%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.9%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms408.84 ± (405.97 - 411.71) ms411.14 ± (407.92 - 414.35) ms+0.6%✅⬆️
process.time_to_main_ms486.82 ± (486.17 - 487.46) ms479.98 ± (479.28 - 480.68) ms-1.4%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.26 ± (62.12 - 62.41) MB62.13 ± (61.99 - 62.28) MB-0.2%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.0%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms188.56 ± (188.23 - 188.89) ms188.79 ± (188.37 - 189.21) ms+0.1%✅⬆️
process.time_to_main_ms68.83 ± (68.67 - 69.00) ms69.28 ± (69.08 - 69.48) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.75 ± (11.72 - 11.78) MB11.74 ± (11.72 - 11.77) MB-0.1%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.4%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms187.60 ± (187.33 - 187.87) ms188.45 ± (188.04 - 188.86) ms+0.5%✅⬆️
process.time_to_main_ms69.84 ± (69.74 - 69.94) ms70.37 ± (70.19 - 70.56) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.83 ± (11.80 - 11.86) MB11.86 ± (11.81 - 11.91) MB+0.2%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.5%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms358.73 ± (357.14 - 360.31) ms356.40 ± (354.71 - 358.09) ms-0.6%
process.time_to_main_ms464.28 ± (463.57 - 464.99) ms455.83 ± (455.02 - 456.63) ms-1.8%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.36 ± (50.32 - 50.39) MB50.26 ± (50.23 - 50.29) MB-0.2%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.2%
Comparison explanation

Execution-time benchmarks measure the whole time it takes to execute a program, and are intended to measure the one-off costs. Cases where the execution time results for the PR are worse than latest master results are highlighted in **red**. The following thresholds were used for comparing the execution times:

  • Welch test with statistical test for significance of 5%
  • Only results indicating a difference greater than 5% and 5 ms are considered.

Note that these results are based on a single point-in-time result for each branch. For full results, see the dashboard.

Graphs show the p99 interval based on the mean and StdDev of the test run, as well as the mean value of the run (shown as a diamond below the graph).

Duration charts
FakeDbCommand (.NET Framework 4.8)
gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7723) - mean (74ms)  : 69, 78
    master - mean (74ms)  : 70, 78

    section Bailout
    This PR (7723) - mean (79ms)  : 73, 84
    master - mean (78ms)  : 74, 82

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (1,112ms)  : 1034, 1190
    master - mean (1,097ms)  : 1021, 1173

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 (7723) - mean (121ms)  : 112, 131
    master - mean (115ms)  : 110, 121

    section Bailout
    This PR (7723) - mean (117ms)  : 110, 124
    master - mean (118ms)  : 109, 128

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (809ms)  : 771, 847
    master - mean (805ms)  : 749, 861

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

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

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (748ms)  : 708, 787
    master - mean (745ms)  : 708, 781

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7723) - mean (102ms)  : 94, 111
    master - mean (102ms)  : 94, 110

    section Bailout
    This PR (7723) - mean (103ms)  : 96, 110
    master - mean (104ms)  : 96, 111

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (712ms)  : 690, 734
    master - mean (716ms)  : 688, 744

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 (7723) - mean (192ms)  : 187, 197
    master - mean (192ms)  : 187, 196

    section Bailout
    This PR (7723) - mean (196ms)  : 193, 198
    master - mean (197ms)  : 192, 203

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (1,165ms)  : 1091, 1239
    master - mean (1,161ms)  : 1101, 1221

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 (7723) - mean (275ms)  : 268, 282
    master - mean (276ms)  : 271, 282

    section Bailout
    This PR (7723) - mean (276ms)  : 272, 280
    master - mean (277ms)  : 273, 281

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (948ms)  : 907, 989
    master - mean (959ms)  : 915, 1003

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7723) - mean (268ms)  : 262, 275
    master - mean (267ms)  : 262, 273

    section Bailout
    This PR (7723) - mean (267ms)  : 263, 271
    master - mean (268ms)  : 264, 273

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (924ms)  : 864, 983
    master - mean (932ms)  : 871, 994

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7723) - mean (267ms)  : 260, 275
    master - mean (267ms)  : 262, 271

    section Bailout
    This PR (7723) - mean (268ms)  : 263, 274
    master - mean (267ms)  : 263, 271

    section CallTarget+Inlining+NGEN
    This PR (7723) - mean (845ms)  : 826, 863
    master - mean (855ms)  : 831, 879

Loading

@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from dd7b7eb to 10c89c9 Compare November 4, 2025 15:36
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from 717fff8 to 21e9e1c Compare November 4, 2025 15:36
@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 10c89c9 to 741db4f Compare November 6, 2025 08:32
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from 21e9e1c to 67beb6a Compare November 6, 2025 08:33
@andrewlock andrewlock force-pushed the andrew/settings/5-move-mutable-settings-off-tracer-settings branch from 741db4f to 3d2a06f Compare November 7, 2025 18:09
@andrewlock andrewlock force-pushed the andrew/settings/4-mutable-settings-service branch from 67beb6a to 920071a Compare November 7, 2025 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) type:refactor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants