Skip to content

Conversation

@kr-igor
Copy link
Contributor

@kr-igor kr-igor commented Nov 6, 2025

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

@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 6, 2025
@datadog-official

This comment has been minimized.

@pr-commenter
Copy link

pr-commenter bot commented Nov 6, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7792 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.531
  • 4 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 ✔️ More allocations ⚠️

More allocations ⚠️ in #7792

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 5.99 KB 6.08 KB 92 B 1.54%
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑netcoreapp3.1 5.67 KB 5.71 KB 35 B 0.62%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.4μs 58.6ns 389ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 14.2μs 72.1ns 330ns 0 0 0 5.67 KB
master StartStopWithChild net472 22.4μs 88.4ns 342ns 1.05 0.418 0.105 5.99 KB
#7792 StartStopWithChild net6.0 10.5μs 57.6ns 350ns 0 0 0 5.5 KB
#7792 StartStopWithChild netcoreapp3.1 13.9μs 72.6ns 340ns 0 0 0 5.71 KB
#7792 StartStopWithChild net472 21.6μs 70.8ns 255ns 0.911 0.228 0 6.08 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7792

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 3.35 KB 3.31 KB -46 B -1.37%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 927μs 64.7ns 242ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.06ms 846ns 3.28μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 71.4ns 267ns 0 0 0 3.35 KB
#7792 WriteAndFlushEnrichedTraces net6.0 935μs 99.7ns 359ns 0 0 0 2.71 KB
#7792 WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 76.4ns 276ns 0 0 0 2.7 KB
#7792 WriteAndFlushEnrichedTraces net472 1.2ms 107ns 400ns 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.07μs 1.45ns 5.62ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.46μs 7.77ns 38.9ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.654ns 2.53ns 0.195 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 6.99μs 35.2ns 153ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.01μs 24.8ns 96.2ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.6μs 4.46ns 17.3ns 0.726 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 325ns 1.22ns 4.71ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 414ns 2.12ns 9.94ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 295ns 0.0121ns 0.0419ns 0.0432 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.43μs 1.62ns 6.26ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 36.9ns 143ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.73μs 4.21ns 16.3ns 0.574 0 0 3.8 KB
#7792 AllCycleSimpleBody net6.0 1.06μs 6.34ns 63.4ns 0 0 0 1.22 KB
#7792 AllCycleSimpleBody netcoreapp3.1 1.47μs 0.839ns 3.25ns 0 0 0 1.2 KB
#7792 AllCycleSimpleBody net472 1.04μs 0.653ns 2.44ns 0.193 0 0 1.23 KB
#7792 AllCycleMoreComplexBody net6.0 6.95μs 37.3ns 214ns 0 0 0 4.72 KB
#7792 AllCycleMoreComplexBody netcoreapp3.1 8.97μs 31.1ns 120ns 0 0 0 4.62 KB
#7792 AllCycleMoreComplexBody net472 7.7μs 4.99ns 19.3ns 0.733 0 0 4.74 KB
#7792 ObjectExtractorSimpleBody net6.0 326ns 0.0636ns 0.22ns 0 0 0 280 B
#7792 ObjectExtractorSimpleBody netcoreapp3.1 392ns 2.21ns 14.3ns 0 0 0 272 B
#7792 ObjectExtractorSimpleBody net472 307ns 1.48ns 5.94ns 0.0439 0 0 281 B
#7792 ObjectExtractorMoreComplexBody net6.0 6.36μs 24.1ns 93.4ns 0 0 0 3.78 KB
#7792 ObjectExtractorMoreComplexBody netcoreapp3.1 7.89μs 31.3ns 121ns 0 0 0 3.69 KB
#7792 ObjectExtractorMoreComplexBody net472 6.61μs 0.583ns 2.02ns 0.596 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 76.7μs 260ns 971ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 98.4μs 168ns 649ns 0 0 0 32.4 KB
master EncodeArgs net472 112μs 20.3ns 78.5ns 5.04 0 0 32.51 KB
master EncodeLegacyArgs net6.0 146μs 216ns 837ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 201μs 577ns 2.23μs 0 0 0 2.14 KB
master EncodeLegacyArgs net472 261μs 20.2ns 75.7ns 0 0 0 2.17 KB
#7792 EncodeArgs net6.0 76.7μs 142ns 552ns 0 0 0 32.4 KB
#7792 EncodeArgs netcoreapp3.1 97.4μs 221ns 856ns 0 0 0 32.4 KB
#7792 EncodeArgs net472 110μs 11.9ns 44.7ns 4.95 0 0 32.51 KB
#7792 EncodeLegacyArgs net6.0 149μs 133ns 462ns 0 0 0 2.15 KB
#7792 EncodeLegacyArgs netcoreapp3.1 199μs 226ns 876ns 0 0 0 2.14 KB
#7792 EncodeLegacyArgs net472 266μs 39.6ns 153ns 0 0 0 2.17 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7792

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.105 870,408.73 413,559.38

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 400μs 102ns 368ns 0 0 0 4.56 KB
master RunWafRealisticBenchmark netcoreapp3.1 828μs 13.1μs 131μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 429μs 30.2ns 113ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 287μs 85.1ns 318ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 309μs 221ns 827ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 309μs 29.2ns 109ns 0 0 0 2.29 KB
#7792 RunWafRealisticBenchmark net6.0 402μs 118ns 455ns 0 0 0 4.55 KB
#7792 RunWafRealisticBenchmark netcoreapp3.1 414μs 118ns 426ns 0 0 0 4.48 KB
#7792 RunWafRealisticBenchmark net472 437μs 578ns 2.24μs 0 0 0 4.66 KB
#7792 RunWafRealisticBenchmarkWithAttack net6.0 290μs 90.6ns 339ns 0 0 0 2.24 KB
#7792 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 299μs 186ns 671ns 0 0 0 2.22 KB
#7792 RunWafRealisticBenchmarkWithAttack net472 314μs 235ns 911ns 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.1μs 60.4ns 218ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 72.8μs 98.1ns 367ns 0 0 0 17.42 KB
master SendRequest net472 0.00895ns 0.0023ns 0.00862ns 0 0 0 0 b
#7792 SendRequest net6.0 60.7μs 43.3ns 156ns 0 0 0 14.52 KB
#7792 SendRequest netcoreapp3.1 73.5μs 364ns 1.67μs 0 0 0 17.42 KB
#7792 SendRequest net472 0.00151ns 0.00108ns 0.00419ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7792

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%

Fewer allocations 🎉 in #7792

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 4 B 2 B -2 B -50.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.95ms 5.87μs 22.7μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.08ms 6.07μs 23.5μs 0 0 0 640 KB
master OriginalCharSlice net472 2.59ms 529ns 1.91μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.46ms 320ns 1.24μs 0 0 0 4 B
master OptimizedCharSlice netcoreapp3.1 1.75ms 544ns 2.11μs 0 0 0 1 B
master OptimizedCharSlice net472 1.9ms 262ns 1.02μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 826μs 26.8ns 100ns 0 0 0 4 B
master OptimizedCharSliceWithPool netcoreapp3.1 840μs 141ns 544ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.22ms 248ns 959ns 0 0 0 0 b
#7792 OriginalCharSlice net6.0 1.92ms 628ns 2.43μs 0 0 0 640.01 KB
#7792 OriginalCharSlice netcoreapp3.1 2.13ms 5.64μs 21.1μs 0 0 0 640 KB
#7792 OriginalCharSlice net472 2.63ms 173ns 624ns 100 0 0 641.95 KB
#7792 OptimizedCharSlice net6.0 1.36ms 3.13μs 12.1μs 0 0 0 7 B
#7792 OptimizedCharSlice netcoreapp3.1 1.72ms 336ns 1.3μs 0 0 0 1 B
#7792 OptimizedCharSlice net472 2ms 264ns 1.02μs 0 0 0 73 B
#7792 OptimizedCharSliceWithPool net6.0 802μs 60.4ns 234ns 0 0 0 2 B
#7792 OptimizedCharSliceWithPool netcoreapp3.1 810μs 88.3ns 342ns 0 0 0 1 B
#7792 OptimizedCharSliceWithPool net472 1.15ms 182ns 707ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 642μs 488ns 1.89μs 0 0 0 41.65 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 692μs 2.32μs 8.38μs 0 0 0 42.17 KB
master WriteAndFlushEnrichedTraces net472 897μs 4.28μs 16.6μs 8.33 0 0 56.12 KB
#7792 WriteAndFlushEnrichedTraces net6.0 683μs 3.66μs 20.7μs 0 0 0 41.71 KB
#7792 WriteAndFlushEnrichedTraces netcoreapp3.1 731μs 3.43μs 13.7μs 0 0 0 42.2 KB
#7792 WriteAndFlushEnrichedTraces net472 863μs 2.86μs 11.1μs 8.33 0 0 56.32 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.9μs 1.28ns 4.78ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.68μs 11.8ns 45.6ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.9μs 6.14ns 21.3ns 0.144 0.0144 0 987 B
#7792 ExecuteNonQuery net6.0 1.92μs 9.42ns 42.1ns 0 0 0 1.02 KB
#7792 ExecuteNonQuery netcoreapp3.1 2.61μs 12ns 46.4ns 0 0 0 1.02 KB
#7792 ExecuteNonQuery net472 2.95μs 4.13ns 16ns 0.146 0.0146 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 0.596ns 2.31ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.2μs 11.4ns 54.5ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.52μs 1.9ns 7.36ns 0.158 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.92μs 4.09ns 15.3ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.35μs 8.99ns 33.6ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.7μs 1.85ns 6.93ns 0.166 0 0 1.1 KB
#7792 CallElasticsearch net6.0 1.74μs 8.96ns 41.1ns 0 0 0 1.03 KB
#7792 CallElasticsearch netcoreapp3.1 2.16μs 10.9ns 48.7ns 0 0 0 1.03 KB
#7792 CallElasticsearch net472 3.73μs 1.35ns 5.22ns 0.148 0 0 1.04 KB
#7792 CallElasticsearchAsync net6.0 1.87μs 2.2ns 8.53ns 0 0 0 1.01 KB
#7792 CallElasticsearchAsync netcoreapp3.1 2.39μs 7.49ns 29ns 0 0 0 1.08 KB
#7792 CallElasticsearchAsync net472 3.72μs 3.68ns 14.2ns 0.167 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.83μs 1.05ns 3.95ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.53μs 11.6ns 44.8ns 0 0 0 952 B
master ExecuteAsync net472 2.56μs 1.3ns 5.04ns 0.142 0 0 915 B
#7792 ExecuteAsync net6.0 1.83μs 8.46ns 32.8ns 0 0 0 952 B
#7792 ExecuteAsync netcoreapp3.1 2.46μs 10.4ns 40.1ns 0 0 0 952 B
#7792 ExecuteAsync net472 2.58μs 2.02ns 7.83ns 0.143 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.86μs 10.9ns 40.8ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.33μs 26.3ns 102ns 0 0 0 2.9 KB
master SendAsync net472 12.1μs 7.49ns 28ns 0.482 0 0 3.18 KB
#7792 SendAsync net6.0 7.14μs 22.5ns 84.1ns 0 0 0 2.36 KB
#7792 SendAsync netcoreapp3.1 8.69μs 5.69ns 22ns 0 0 0 2.9 KB
#7792 SendAsync net472 12.3μs 12.2ns 47.2ns 0.492 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7792

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 44.04 KB 45.5 KB 1.46 KB 3.32%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 278.53 KB 286.72 KB 8.19 KB 2.94%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 274.06 KB 278.19 KB 4.14 KB 1.51%

Fewer allocations 🎉 in #7792

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 278.21 KB 275.63 KB -2.58 KB -0.93%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 46.16 KB 43.82 KB -2.34 KB -5.08%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 43.2μs 260ns 2.45μs 0 0 0 46.16 KB
master StringConcatBenchmark netcoreapp3.1 46.8μs 168ns 606ns 0 0 0 44.04 KB
master StringConcatBenchmark net472 56.8μs 227ns 849ns 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 470μs 1.36μs 4.71μs 0 0 0 278.21 KB
master StringConcatAspectBenchmark netcoreapp3.1 553μs 1.31μs 4.9μs 0 0 0 274.06 KB
master StringConcatAspectBenchmark net472 411μs 2.01μs 13.3μs 0 0 0 278.53 KB
#7792 StringConcatBenchmark net6.0 45.8μs 237ns 1.19μs 0 0 0 43.82 KB
#7792 StringConcatBenchmark netcoreapp3.1 58.7μs 826ns 8.22μs 0 0 0 45.5 KB
#7792 StringConcatBenchmark net472 56.6μs 257ns 994ns 0 0 0 57.34 KB
#7792 StringConcatAspectBenchmark net6.0 471μs 1.62μs 5.62μs 0 0 0 275.63 KB
#7792 StringConcatAspectBenchmark netcoreapp3.1 526μs 1.45μs 5.04μs 0 0 0 278.19 KB
#7792 StringConcatAspectBenchmark net472 402μs 2.07μs 9.24μs 0 0 0 286.72 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.68μs 10.7ns 41.6ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.6μs 17ns 70.3ns 0 0 0 1.7 KB
master EnrichedLog net472 4.04μs 4.82ns 18ns 0.24 0 0 1.64 KB
#7792 EnrichedLog net6.0 2.7μs 14.4ns 72.2ns 0 0 0 1.7 KB
#7792 EnrichedLog netcoreapp3.1 3.62μs 15.6ns 62.2ns 0 0 0 1.7 KB
#7792 EnrichedLog net472 3.83μs 3.47ns 13.4ns 0.248 0 0 1.64 KB
Benchmarks.Trace.Log4netBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7792

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Log4netBenchmark.EnrichedLog‑net6.0 1.113 136,821.94 122,875.89

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 137μs 243ns 875ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 130μs 678ns 3.96μs 0 0 0 4.31 KB
master EnrichedLog net472 174μs 980ns 6.65μs 0 0 0 4.51 KB
#7792 EnrichedLog net6.0 123μs 61.8ns 223ns 0 0 0 4.31 KB
#7792 EnrichedLog netcoreapp3.1 130μs 501ns 1.87μs 0 0 0 4.31 KB
#7792 EnrichedLog net472 167μs 90.1ns 337ns 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 4.96μs 25.1ns 109ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.68μs 30.2ns 117ns 0 0 0 2.26 KB
master EnrichedLog net472 7.55μs 9.55ns 37ns 0.3 0 0 2.08 KB
#7792 EnrichedLog net6.0 4.84μs 4.18ns 15.1ns 0 0 0 2.26 KB
#7792 EnrichedLog netcoreapp3.1 6.84μs 22.8ns 88.2ns 0 0 0 2.26 KB
#7792 EnrichedLog net472 7.55μs 8.02ns 31.1ns 0.303 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 2.04μs 3.2ns 12.4ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.69μs 12ns 43.1ns 0 0 0 1.2 KB
master SendReceive net472 3.04μs 2.74ns 10.6ns 0.183 0 0 1.2 KB
#7792 SendReceive net6.0 1.98μs 4.3ns 16.7ns 0 0 0 1.2 KB
#7792 SendReceive netcoreapp3.1 2.59μs 11.5ns 44.4ns 0 0 0 1.2 KB
#7792 SendReceive net472 2.97μs 3.84ns 14.4ns 0.177 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.31μs 16.4ns 61.5ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.77μs 9.03ns 35ns 0 0 0 1.63 KB
master EnrichedLog net472 6.52μs 7.68ns 29.7ns 0.293 0 0 2.03 KB
#7792 EnrichedLog net6.0 4.19μs 4.16ns 15.6ns 0 0 0 1.58 KB
#7792 EnrichedLog netcoreapp3.1 5.57μs 17.4ns 67.5ns 0 0 0 1.63 KB
#7792 EnrichedLog net472 6.81μs 6.66ns 24.9ns 0.308 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 769ns 4.12ns 21.8ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 943ns 4.54ns 17.6ns 0 0 0 576 B
master StartFinishSpan net472 919ns 0.765ns 2.96ns 0.0877 0 0 578 B
master StartFinishScope net6.0 938ns 0.458ns 1.71ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.2μs 5.39ns 20.9ns 0 0 0 696 B
master StartFinishScope net472 1.13μs 0.537ns 2.08ns 0.101 0 0 658 B
#7792 StartFinishSpan net6.0 761ns 3.69ns 14.7ns 0 0 0 576 B
#7792 StartFinishSpan netcoreapp3.1 963ns 5.03ns 26.2ns 0 0 0 576 B
#7792 StartFinishSpan net472 924ns 0.393ns 1.52ns 0.0876 0 0 578 B
#7792 StartFinishScope net6.0 928ns 1.89ns 7.32ns 0 0 0 696 B
#7792 StartFinishScope netcoreapp3.1 1.21μs 6.11ns 26.6ns 0 0 0 696 B
#7792 StartFinishScope net472 1.13μs 0.766ns 2.97ns 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.05μs 0.921ns 3.57ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.43μs 5.48ns 21.2ns 0 0 0 696 B
master RunOnMethodBegin net472 1.46μs 0.823ns 3.19ns 0.102 0 0 658 B
#7792 RunOnMethodBegin net6.0 1.09μs 5.72ns 29.7ns 0 0 0 696 B
#7792 RunOnMethodBegin netcoreapp3.1 1.45μs 7.16ns 31.2ns 0 0 0 696 B
#7792 RunOnMethodBegin net472 1.42μs 1.02ns 3.97ns 0.0991 0 0 658 B

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

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7792) 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.64 ± (75.38 - 75.99) ms74.16 ± (74.09 - 74.66) ms-2.0%
.NET Framework 4.8 - Bailout
duration78.77 ± (78.77 - 79.36) ms77.23 ± (77.17 - 77.85) ms-2.0%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1114.22 ± (1117.39 - 1128.56) ms1096.21 ± (1094.43 - 1102.01) ms-1.6%
.NET Core 3.1 - Baseline
process.internal_duration_ms22.95 ± (22.88 - 23.03) ms22.66 ± (22.60 - 22.73) ms-1.3%
process.time_to_main_ms86.94 ± (86.52 - 87.37) ms85.84 ± (85.49 - 86.20) ms-1.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.92 ± (10.92 - 10.93) MB10.88 ± (10.87 - 10.88) MB-0.4%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.94 ± (22.87 - 23.01) ms22.71 ± (22.65 - 22.78) ms-1.0%
process.time_to_main_ms88.80 ± (88.36 - 89.25) ms87.97 ± (87.60 - 88.35) ms-0.9%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.95 ± (10.94 - 10.95) MB10.92 ± (10.92 - 10.92) MB-0.3%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms221.20 ± (219.64 - 222.75) ms220.38 ± (219.03 - 221.72) ms-0.4%
process.time_to_main_ms551.39 ± (549.98 - 552.81) ms545.55 ± (544.38 - 546.72) ms-1.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.64 ± (52.61 - 52.66) MB53.08 ± (53.05 - 53.11) MB+0.8%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.5%
.NET 6 - Baseline
process.internal_duration_ms21.73 ± (21.66 - 21.79) ms21.79 ± (21.72 - 21.87) ms+0.3%✅⬆️
process.time_to_main_ms75.68 ± (75.36 - 75.99) ms75.49 ± (75.12 - 75.87) ms-0.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.60 ± (10.60 - 10.61) MB10.59 ± (10.59 - 10.59) MB-0.1%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.75 ± (21.67 - 21.83) ms21.57 ± (21.50 - 21.64) ms-0.8%
process.time_to_main_ms77.29 ± (76.91 - 77.66) ms75.14 ± (74.86 - 75.42) ms-2.8%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.66 - 10.66) MB10.64 ± (10.63 - 10.64) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms206.65 ± (205.37 - 207.92) ms206.70 ± (205.41 - 208.00) ms+0.0%✅⬆️
process.time_to_main_ms514.40 ± (513.32 - 515.49) ms506.89 ± (505.82 - 507.96) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.87 ± (51.84 - 51.89) MB52.32 ± (52.29 - 52.35) MB+0.9%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms20.13 ± (20.04 - 20.22) ms19.38 ± (19.31 - 19.44) ms-3.7%
process.time_to_main_ms77.56 ± (77.04 - 78.09) ms72.08 ± (71.75 - 72.40) ms-7.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.64 ± (7.64 - 7.65) MB7.62 ± (7.61 - 7.62) MB-0.4%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.79 ± (19.73 - 19.86) ms19.44 ± (19.39 - 19.50) ms-1.8%
process.time_to_main_ms75.93 ± (75.62 - 76.25) ms73.65 ± (73.41 - 73.89) ms-3.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.71 ± (7.70 - 7.72) MB7.68 ± (7.67 - 7.68) MB-0.4%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms189.72 ± (188.80 - 190.63) ms189.89 ± (188.92 - 190.85) ms+0.1%✅⬆️
process.time_to_main_ms492.66 ± (491.56 - 493.77) ms481.48 ± (480.15 - 482.81) ms-2.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed39.01 ± (38.97 - 39.04) MB39.35 ± (39.30 - 39.40) MB+0.9%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.3%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.06 ± (192.08 - 192.76) ms195.95 ± (195.88 - 196.91) ms+2.0%✅⬆️
.NET Framework 4.8 - Bailout
duration196.17 ± (196.13 - 196.85) ms198.03 ± (197.61 - 198.45) ms+0.9%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1150.43 ± (1152.67 - 1159.10) ms1170.59 ± (1174.65 - 1184.02) ms+1.8%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms187.57 ± (187.13 - 188.02) ms192.11 ± (191.36 - 192.86) ms+2.4%✅⬆️
process.time_to_main_ms80.42 ± (80.19 - 80.65) ms82.68 ± (82.33 - 83.03) ms+2.8%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.09 ± (16.06 - 16.11) MB16.01 ± (15.99 - 16.03) MB-0.5%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.6%
.NET Core 3.1 - Bailout
process.internal_duration_ms186.34 ± (186.09 - 186.60) ms189.38 ± (188.93 - 189.83) ms+1.6%✅⬆️
process.time_to_main_ms81.40 ± (81.27 - 81.53) ms83.33 ± (83.09 - 83.57) ms+2.4%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.06 - 16.17) MB16.09 ± (16.07 - 16.11) MB-0.1%
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (20 - 21)-0.3%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms391.82 ± (389.14 - 394.51) ms395.38 ± (392.81 - 397.95) ms+0.9%✅⬆️
process.time_to_main_ms515.23 ± (514.60 - 515.86) ms519.46 ± (518.79 - 520.13) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed62.87 ± (62.71 - 63.03) MB63.40 ± (63.25 - 63.55) MB+0.8%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.0%
.NET 6 - Baseline
process.internal_duration_ms190.34 ± (189.97 - 190.72) ms191.53 ± (191.20 - 191.85) ms+0.6%✅⬆️
process.time_to_main_ms69.28 ± (69.08 - 69.47) ms69.82 ± (69.68 - 69.97) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.94 ± (15.78 - 16.09) MB16.12 ± (15.99 - 16.25) MB+1.2%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 19)+0.8%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms204.21 ± (203.77 - 204.64) ms190.69 ± (190.44 - 190.94) ms-6.6%
process.time_to_main_ms75.97 ± (75.71 - 76.23) ms70.62 ± (70.52 - 70.73) ms-7.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.25 ± (16.22 - 16.27) MB16.22 ± (16.09 - 16.35) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)19 ± (19 - 20)-4.6%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms419.32 ± (416.21 - 422.43) ms407.95 ± (405.41 - 410.49) ms-2.7%
process.time_to_main_ms496.23 ± (495.06 - 497.40) ms486.82 ± (486.24 - 487.41) ms-1.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.56 ± (62.43 - 62.69) MB62.67 ± (62.52 - 62.83) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)30 ± (29 - 30)+0.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms192.36 ± (191.87 - 192.86) ms190.17 ± (189.76 - 190.58) ms-1.1%
process.time_to_main_ms69.82 ± (69.61 - 70.02) ms69.41 ± (69.22 - 69.59) ms-0.6%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.64 ± (11.62 - 11.65) MB11.76 ± (11.73 - 11.80) MB+1.1%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.8%
.NET 8 - Bailout
process.internal_duration_ms191.25 ± (190.76 - 191.75) ms189.79 ± (189.53 - 190.06) ms-0.8%
process.time_to_main_ms70.67 ± (70.52 - 70.83) ms70.54 ± (70.40 - 70.68) ms-0.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.78 ± (11.75 - 11.81) MB11.85 ± (11.82 - 11.89) MB+0.7%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.7%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms364.26 ± (362.74 - 365.77) ms362.13 ± (360.77 - 363.49) ms-0.6%
process.time_to_main_ms470.00 ± (468.94 - 471.06) ms460.75 ± (460.11 - 461.38) ms-2.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.64 ± (50.60 - 50.67) MB50.63 ± (50.59 - 50.66) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.4%
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 (7792) - mean (74ms)  : 70, 78
    master - mean (76ms)  : 71, 80

    section Bailout
    This PR (7792) - mean (78ms)  : 72, 83
    master - mean (79ms)  : 75, 83

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (1,098ms)  : 1044, 1152
    master - mean (1,123ms)  : 1040, 1206

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 (7792) - mean (116ms)  : 108, 124
    master - mean (117ms)  : 110, 125

    section Bailout
    This PR (7792) - mean (118ms)  : 110, 126
    master - mean (119ms)  : 110, 129

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (797ms)  : 759, 835
    master - mean (815ms)  : 772, 857

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7792) - mean (104ms)  : 95, 113
    master - mean (105ms)  : 99, 110

    section Bailout
    This PR (7792) - mean (103ms)  : 98, 109
    master - mean (106ms)  : 99, 113

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (743ms)  : 708, 779
    master - mean (759ms)  : 720, 799

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7792) - mean (99ms)  : 93, 106
    master - mean (107ms)  : 97, 116

    section Bailout
    This PR (7792) - mean (101ms)  : 96, 106
    master - mean (104ms)  : 97, 111

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (701ms)  : 673, 728
    master - mean (724ms)  : 697, 751

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 (7792) - mean (196ms)  : 189, 204
    master - mean (192ms)  : 189, 196

    section Bailout
    This PR (7792) - mean (198ms)  : 194, 202
    master - mean (196ms)  : 193, 200

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (1,179ms)  : 1110, 1249
    master - mean (1,156ms)  : 1110, 1202

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 (7792) - mean (284ms)  : 266, 302
    master - mean (276ms)  : 271, 282

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

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (954ms)  : 913, 995
    master - mean (938ms)  : 893, 983

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

    section Bailout
    This PR (7792) - mean (269ms)  : 266, 272
    master - mean (289ms)  : 282, 296

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (926ms)  : 885, 967
    master - mean (948ms)  : 882, 1015

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

    section Bailout
    This PR (7792) - mean (270ms)  : 265, 275
    master - mean (272ms)  : 264, 280

    section CallTarget+Inlining+NGEN
    This PR (7792) - mean (853ms)  : 830, 877
    master - mean (865ms)  : 827, 904

Loading

@kr-igor kr-igor closed this Nov 6, 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