Skip to content

Conversation

@vandonr
Copy link
Contributor

@vandonr vandonr commented Oct 30, 2025

Summary of changes

addressing late comments on #7651

Reason for change

Implementation details

Test coverage

Other details

@vandonr vandonr marked this pull request as ready for review October 30, 2025 15:40
@vandonr vandonr requested a review from a team as a code owner October 30, 2025 15:40
@vandonr vandonr requested a review from andrewlock October 30, 2025 15:40
@github-actions github-actions bot added the area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) label Oct 30, 2025
Copy link
Member

@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.

Thanks!

@vandonr vandonr enabled auto-merge (squash) October 30, 2025 16:07
@pr-commenter
Copy link

pr-commenter bot commented Oct 30, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7743 compared to master:

  • 1 benchmarks are faster, with geometric mean 1.237
  • 2 benchmarks are slower, with geometric mean 1.626
  • 7 benchmarks have fewer allocations
  • 4 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

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

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7743

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.13 KB 6.05 KB -83 B -1.35%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 9.99μs 15.7ns 54.5ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 14.1μs 72.2ns 331ns 0 0 0 5.74 KB
master StartStopWithChild net472 22.6μs 127ns 844ns 0.887 0.332 0 6.13 KB
#7743 StartStopWithChild net6.0 10.5μs 58ns 362ns 0 0 0 5.54 KB
#7743 StartStopWithChild netcoreapp3.1 13.6μs 67.5ns 287ns 0 0 0 5.71 KB
#7743 StartStopWithChild net472 22μs 123ns 777ns 0.968 0.323 0.108 6.05 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 928μs 150ns 581ns 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.02ms 51.6ns 186ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 78ns 302ns 0 0 0 3.31 KB
#7743 WriteAndFlushEnrichedTraces net6.0 923μs 109ns 376ns 0 0 0 2.71 KB
#7743 WriteAndFlushEnrichedTraces netcoreapp3.1 1.04ms 179ns 695ns 0 0 0 2.7 KB
#7743 WriteAndFlushEnrichedTraces net472 1.19ms 66.6ns 231ns 0 0 0 3.31 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Unknown 🤷 Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
master AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
master ObjectExtractorSimpleBody net6.0 320ns 1.63ns 7.47ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 410ns 2.27ns 14.2ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 295ns 0.0436ns 0.169ns 0.0446 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.31μs 33.3ns 176ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.91μs 39.9ns 178ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.64μs 2.9ns 11.2ns 0.598 0 0 3.8 KB
#7743 AllCycleSimpleBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7743 AllCycleSimpleBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7743 AllCycleSimpleBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7743 AllCycleMoreComplexBody net6.0 N/A N/A N/A NaN NaN NaN 0 b
#7743 AllCycleMoreComplexBody netcoreapp3.1 N/A N/A N/A NaN NaN NaN 0 b
#7743 AllCycleMoreComplexBody net472 N/A N/A N/A NaN NaN NaN 0 b
#7743 ObjectExtractorSimpleBody net6.0 322ns 1.82ns 11.8ns 0 0 0 280 B
#7743 ObjectExtractorSimpleBody netcoreapp3.1 395ns 2.24ns 14.7ns 0 0 0 272 B
#7743 ObjectExtractorSimpleBody net472 300ns 0.0782ns 0.271ns 0.0433 0 0 281 B
#7743 ObjectExtractorMoreComplexBody net6.0 6.18μs 30.7ns 137ns 0 0 0 3.78 KB
#7743 ObjectExtractorMoreComplexBody netcoreapp3.1 7.7μs 37.2ns 153ns 0 0 0 3.69 KB
#7743 ObjectExtractorMoreComplexBody net472 6.65μs 4.44ns 17.2ns 0.601 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.8μs 102ns 382ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.1μs 215ns 832ns 0 0 0 32.4 KB
master EncodeArgs net472 110μs 18.4ns 66.3ns 5.04 0 0 32.51 KB
master EncodeLegacyArgs net6.0 145μs 33.7ns 126ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 204μs 419ns 1.62μs 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 44.8ns 162ns 0 0 0 2.16 KB
#7743 EncodeArgs net6.0 75.5μs 312ns 1.21μs 0 0 0 32.4 KB
#7743 EncodeArgs netcoreapp3.1 96.5μs 202ns 781ns 0 0 0 32.4 KB
#7743 EncodeArgs net472 110μs 67.5ns 262ns 4.98 0 0 32.51 KB
#7743 EncodeLegacyArgs net6.0 145μs 188ns 728ns 0 0 0 2.15 KB
#7743 EncodeLegacyArgs netcoreapp3.1 201μs 507ns 1.96μs 0 0 0 2.14 KB
#7743 EncodeLegacyArgs net472 265μs 93.5ns 362ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7743

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.357 299,897.17 706,962.34

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 394μs 76.9ns 288ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 416μs 114ns 410ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 429μs 33.7ns 130ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 287μs 56.4ns 211ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 300μs 83.3ns 323ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 309μs 61.6ns 238ns 0 0 0 2.29 KB
#7743 RunWafRealisticBenchmark net6.0 393μs 60.3ns 226ns 0 0 0 4.56 KB
#7743 RunWafRealisticBenchmark netcoreapp3.1 413μs 97.3ns 337ns 0 0 0 4.48 KB
#7743 RunWafRealisticBenchmark net472 426μs 47.8ns 185ns 0 0 0 4.66 KB
#7743 RunWafRealisticBenchmarkWithAttack net6.0 287μs 60.4ns 234ns 0 0 0 2.24 KB
#7743 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 706μs 2.1μs 7.59μs 0 0 0 2.22 KB
#7743 RunWafRealisticBenchmarkWithAttack net472 310μs 24.8ns 92.9ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61.3μs 70.3ns 244ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 70.9μs 42.9ns 155ns 0 0 0 17.42 KB
master SendRequest net472 0.00442ns 0.00215ns 0.00831ns 0 0 0 0 b
#7743 SendRequest net6.0 60μs 120ns 416ns 0 0 0 14.52 KB
#7743 SendRequest netcoreapp3.1 70.7μs 180ns 697ns 0 0 0 17.42 KB
#7743 SendRequest net472 0.000646ns 0.000646ns 0.0025ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower ⚠️ More allocations ⚠️

Slower ⚠️ in #7743

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 1.121 1,348,703.82 1,512,111.46

More allocations ⚠️ in #7743

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

Fewer allocations 🎉 in #7743

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 4 B 2 B -2 B -50.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 2 B 1 B -1 B -50.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 73 B 0 b -73 B -100.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 47 B 0 b -47 B -100.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.9ms 3.62μs 13.5μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.14ms 6.52μs 25.3μs 0 0 0 640 KB
master OriginalCharSlice net472 2.62ms 457ns 1.71μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.35ms 135ns 524ns 0 0 0 4 B
master OptimizedCharSlice netcoreapp3.1 1.76ms 292ns 1.09μs 0 0 0 1 B
master OptimizedCharSlice net472 1.99ms 187ns 723ns 0 0 0 73 B
master OptimizedCharSliceWithPool net6.0 880μs 71.8ns 278ns 0 0 0 2 B
master OptimizedCharSliceWithPool netcoreapp3.1 880μs 49.9ns 187ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.15ms 109ns 422ns 0 0 0 47 B
#7743 OriginalCharSlice net6.0 1.92ms 168ns 652ns 0 0 0 640.01 KB
#7743 OriginalCharSlice netcoreapp3.1 2.11ms 6.09μs 23.6μs 0 0 0 640 KB
#7743 OriginalCharSlice net472 2.71ms 107ns 385ns 100 0 0 641.95 KB
#7743 OptimizedCharSlice net6.0 1.51ms 427ns 1.6μs 0 0 0 2 B
#7743 OptimizedCharSlice netcoreapp3.1 1.7ms 191ns 715ns 0 0 0 1 B
#7743 OptimizedCharSlice net472 2.04ms 350ns 1.35μs 0 0 0 0 b
#7743 OptimizedCharSliceWithPool net6.0 799μs 27.6ns 107ns 0 0 0 1 B
#7743 OptimizedCharSliceWithPool netcoreapp3.1 852μs 104ns 390ns 0 0 0 1 B
#7743 OptimizedCharSliceWithPool net472 1.14ms 130ns 505ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Faster 🎉 More allocations ⚠️

Faster 🎉 in #7743

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 1.237 800,738.72 647,289.51 several?

More allocations ⚠️ in #7743

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.65 KB 56.39 KB 740 B 1.33%
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.83 KB 42.09 KB 264 B 0.63%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 778μs 4.12μs 20.6μs 0 0 0 41.83 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 786μs 4.38μs 29μs 0 0 0 41.87 KB
master WriteAndFlushEnrichedTraces net472 918μs 3.54μs 13.7μs 7.81 0 0 55.65 KB
#7743 WriteAndFlushEnrichedTraces net6.0 754μs 4.06μs 21.1μs 0 0 0 42.09 KB
#7743 WriteAndFlushEnrichedTraces netcoreapp3.1 661μs 3.8μs 29.5μs 0 0 0 41.92 KB
#7743 WriteAndFlushEnrichedTraces net472 968μs 3.33μs 12.4μs 8.33 0 0 56.39 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.95μs 2.08ns 7.78ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.6μs 8.57ns 33.2ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.79μs 1.43ns 5.53ns 0.152 0.0139 0 987 B
#7743 ExecuteNonQuery net6.0 1.9μs 9.67ns 46.4ns 0 0 0 1.02 KB
#7743 ExecuteNonQuery netcoreapp3.1 2.67μs 7.78ns 30.1ns 0 0 0 1.02 KB
#7743 ExecuteNonQuery net472 2.83μs 3.3ns 12.8ns 0.155 0.0141 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.67μs 1.05ns 4.06ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.28μs 10.9ns 46.4ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.66μs 0.752ns 2.91ns 0.165 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.85μs 6.34ns 24.6ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.37μs 11.6ns 46.4ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.68μs 3.31ns 12.8ns 0.167 0 0 1.1 KB
#7743 CallElasticsearch net6.0 1.69μs 8.78ns 41.2ns 0 0 0 1.03 KB
#7743 CallElasticsearch netcoreapp3.1 2.23μs 10.9ns 45.1ns 0 0 0 1.03 KB
#7743 CallElasticsearch net472 3.59μs 2.12ns 8.22ns 0.16 0 0 1.04 KB
#7743 CallElasticsearchAsync net6.0 1.83μs 8.97ns 39.1ns 0 0 0 1.01 KB
#7743 CallElasticsearchAsync netcoreapp3.1 2.39μs 11.6ns 50.5ns 0 0 0 1.08 KB
#7743 CallElasticsearchAsync net472 3.7μs 3.01ns 11.6ns 0.165 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.86μs 8.81ns 34.1ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.49μs 8.45ns 31.6ns 0 0 0 952 B
master ExecuteAsync net472 2.6μs 1.61ns 5.8ns 0.144 0 0 915 B
#7743 ExecuteAsync net6.0 1.82μs 8.79ns 35.2ns 0 0 0 952 B
#7743 ExecuteAsync netcoreapp3.1 2.49μs 8.29ns 32.1ns 0 0 0 952 B
#7743 ExecuteAsync net472 2.69μs 4.27ns 16.5ns 0.133 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.12μs 6.99ns 26.2ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.73μs 26.1ns 101ns 0 0 0 2.9 KB
master SendAsync net472 12.2μs 5.9ns 22.1ns 0.489 0 0 3.18 KB
#7743 SendAsync net6.0 6.97μs 20.9ns 78.3ns 0 0 0 2.36 KB
#7743 SendAsync netcoreapp3.1 8.78μs 9.57ns 37.1ns 0 0 0 2.9 KB
#7743 SendAsync net472 12.6μs 13.9ns 53.9ns 0.505 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7743

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 42.64 KB 52.03 KB 9.39 KB 22.03%

Fewer allocations 🎉 in #7743

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 272.82 KB 255.85 KB -16.98 KB -6.22%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 275.82 KB 250.8 KB -25.02 KB -9.07%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 49.6μs 272ns 1.49μs 0 0 0 43.74 KB
master StringConcatBenchmark netcoreapp3.1 50μs 293ns 2.48μs 0 0 0 42.64 KB
master StringConcatBenchmark net472 57μs 283ns 1.23μs 0 0 0 57.34 KB
master StringConcatAspectBenchmark net6.0 525μs 1.98μs 6.86μs 0 0 0 275.82 KB
master StringConcatAspectBenchmark netcoreapp3.1 512μs 1.97μs 7.11μs 0 0 0 272.82 KB
master StringConcatAspectBenchmark net472 407μs 2.34μs 18.9μs 0 0 0 278.53 KB
#7743 StringConcatBenchmark net6.0 44.6μs 247ns 1.42μs 0 0 0 43.78 KB
#7743 StringConcatBenchmark netcoreapp3.1 50.3μs 295ns 2.55μs 0 0 0 52.03 KB
#7743 StringConcatBenchmark net472 56.6μs 245ns 1.01μs 0 0 0 57.34 KB
#7743 StringConcatAspectBenchmark net6.0 471μs 2.24μs 8.96μs 0 0 0 250.8 KB
#7743 StringConcatAspectBenchmark netcoreapp3.1 508μs 2.48μs 10.8μs 0 0 0 255.85 KB
#7743 StringConcatAspectBenchmark net472 399μs 2.05μs 10.5μ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.75μs 13ns 51.9ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.6μs 15.9ns 61.7ns 0 0 0 1.7 KB
master EnrichedLog net472 3.89μs 4.05ns 15.7ns 0.252 0 0 1.64 KB
#7743 EnrichedLog net6.0 2.63μs 12.7ns 49.3ns 0 0 0 1.7 KB
#7743 EnrichedLog netcoreapp3.1 3.6μs 17.8ns 79.4ns 0 0 0 1.7 KB
#7743 EnrichedLog net472 3.9μs 2.88ns 11.2ns 0.252 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 72.2ns 270ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 129μs 355ns 1.33μs 0 0 0 4.31 KB
master EnrichedLog net472 167μs 36.6ns 142ns 0 0 0 4.52 KB
#7743 EnrichedLog net6.0 122μs 35.3ns 127ns 0 0 0 4.31 KB
#7743 EnrichedLog netcoreapp3.1 131μs 528ns 2.05μs 0 0 0 4.31 KB
#7743 EnrichedLog net472 168μs 39.4ns 153ns 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.12μs 17.6ns 66ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.94μs 16.2ns 62.6ns 0 0 0 2.26 KB
master EnrichedLog net472 7.52μs 5.38ns 20.8ns 0.302 0 0 2.08 KB
#7743 EnrichedLog net6.0 4.89μs 20.3ns 78.4ns 0 0 0 2.26 KB
#7743 EnrichedLog netcoreapp3.1 6.92μs 17.7ns 68.4ns 0 0 0 2.26 KB
#7743 EnrichedLog net472 7.48μs 4.37ns 16.9ns 0.299 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.01μs 6.58ns 24.6ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.72μs 7.03ns 26.3ns 0 0 0 1.2 KB
master SendReceive net472 3.12μs 5.44ns 20.4ns 0.185 0 0 1.2 KB
#7743 SendReceive net6.0 2.01μs 8.2ns 31.8ns 0 0 0 1.2 KB
#7743 SendReceive netcoreapp3.1 2.63μs 12.8ns 54.5ns 0 0 0 1.2 KB
#7743 SendReceive net472 3.06μs 3.92ns 15.2ns 0.183 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.45μs 2.69ns 9.7ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.67μs 18ns 69.6ns 0 0 0 1.63 KB
master EnrichedLog net472 6.57μs 8.39ns 32.5ns 0.296 0 0 2.03 KB
#7743 EnrichedLog net6.0 4.31μs 8.56ns 33.1ns 0 0 0 1.58 KB
#7743 EnrichedLog netcoreapp3.1 5.75μs 15.1ns 58.4ns 0 0 0 1.63 KB
#7743 EnrichedLog net472 6.57μs 7.3ns 28.3ns 0.295 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 764ns 4ns 19.2ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 986ns 5.19ns 27ns 0 0 0 576 B
master StartFinishSpan net472 959ns 0.419ns 1.62ns 0.0916 0 0 578 B
master StartFinishScope net6.0 916ns 4.43ns 18.8ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.2μs 5.57ns 21.6ns 0 0 0 696 B
master StartFinishScope net472 1.14μs 0.513ns 1.99ns 0.103 0 0 658 B
#7743 StartFinishSpan net6.0 768ns 0.437ns 1.69ns 0 0 0 576 B
#7743 StartFinishSpan netcoreapp3.1 977ns 4.57ns 17.7ns 0 0 0 576 B
#7743 StartFinishSpan net472 951ns 0.27ns 1.01ns 0.0908 0 0 578 B
#7743 StartFinishScope net6.0 919ns 0.234ns 0.908ns 0 0 0 696 B
#7743 StartFinishScope netcoreapp3.1 1.2μs 6.23ns 30.5ns 0 0 0 696 B
#7743 StartFinishScope net472 1.17μs 2.66ns 10.3ns 0.105 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.16ns 24.7ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.42μs 6.79ns 27.1ns 0 0 0 696 B
master RunOnMethodBegin net472 1.43μs 1.01ns 3.9ns 0.1 0 0 658 B
#7743 RunOnMethodBegin net6.0 1.05μs 5.63ns 31.9ns 0 0 0 696 B
#7743 RunOnMethodBegin netcoreapp3.1 1.4μs 7.27ns 33.3ns 0 0 0 696 B
#7743 RunOnMethodBegin net472 1.45μs 1.78ns 6.41ns 0.102 0 0 658 B

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing the following branches/commits:

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 shown 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).

gantt
    title Execution time (ms) FakeDbCommand (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (79ms)  : crit, 76, 81
     .   : crit, milestone, 79,
    master - mean (71ms)  : 70, 73
     .   : milestone, 71,

    section Baseline
    This PR (7743) - mean (75ms)  : 72, 78
     .   : milestone, 75,
    master - mean (68ms)  : 67, 69
     .   : milestone, 68,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (1,106ms)  : crit, 1029, 1183
     .   : crit, milestone, 1106,
    master - mean (1,041ms)  : 994, 1088
     .   : milestone, 1041,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (117ms)  : crit, 114, 120
     .   : crit, milestone, 117,
    master - mean (107ms)  : 105, 108
     .   : milestone, 107,

    section Baseline
    This PR (7743) - mean (116ms)  : 112, 121
     .   : milestone, 116,
    master - mean (106ms)  : 104, 108
     .   : milestone, 106,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (790ms)  : crit, 761, 818
     .   : crit, milestone, 790,
    master - mean (746ms)  : 719, 774
     .   : milestone, 746,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (104ms)  : crit, 101, 107
     .   : crit, milestone, 104,
    master - mean (94ms)  : 93, 95
     .   : milestone, 94,

    section Baseline
    This PR (7743) - mean (104ms)  : 101, 106
     .   : milestone, 104,
    master - mean (93ms)  : 91, 96
     .   : milestone, 93,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (748ms)  : crit, 719, 777
     .   : crit, milestone, 748,
    master - mean (706ms)  : 672, 740
     .   : milestone, 706,

Loading
gantt
    title Execution time (ms) FakeDbCommand (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (103ms)  : crit, 100, 106
     .   : crit, milestone, 103,
    master - mean (92ms)  : 91, 93
     .   : milestone, 92,

    section Baseline
    This PR (7743) - mean (102ms)  : 99, 104
     .   : milestone, 102,
    master - mean (92ms)  : 90, 94
     .   : milestone, 92,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (704ms)  : crit, 684, 725
     .   : crit, milestone, 704,
    master - mean (661ms)  : 649, 673
     .   : milestone, 661,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Framework 4.8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (198ms)  : 195, 202
     .   : milestone, 198,
    master - mean (196ms)  : 193, 198
     .   : milestone, 196,

    section Baseline
    This PR (7743) - mean (194ms)  : 190, 198
     .   : milestone, 194,
    master - mean (193ms)  : 189, 197
     .   : milestone, 193,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (1,175ms)  : 1102, 1248
     .   : milestone, 1175,
    master - mean (1,158ms)  : 1111, 1204
     .   : milestone, 1158,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET Core 3.1) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (277ms)  : 273, 281
     .   : milestone, 277,
    master - mean (277ms)  : 273, 281
     .   : milestone, 277,

    section Baseline
    This PR (7743) - mean (277ms)  : 270, 285
     .   : milestone, 277,
    master - mean (276ms)  : 271, 281
     .   : milestone, 276,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (949ms)  : 904, 994
     .   : milestone, 949,
    master - mean (940ms)  : 896, 985
     .   : milestone, 940,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (276ms)  : 270, 281
     .   : milestone, 276,
    master - mean (269ms)  : 265, 274
     .   : milestone, 269,

    section Baseline
    This PR (7743) - mean (275ms)  : 268, 283
     .   : milestone, 275,
    master - mean (268ms)  : 265, 272
     .   : milestone, 268,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (936ms)  : 888, 984
     .   : milestone, 936,
    master - mean (921ms)  : 871, 971
     .   : milestone, 921,

Loading
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8) 
    dateFormat  X
    axisFormat %s
    todayMarker off
    section Bailout
    This PR (7743) - mean (269ms)  : 266, 272
     .   : milestone, 269,
    master - mean (269ms)  : 264, 274
     .   : milestone, 269,

    section Baseline
    This PR (7743) - mean (270ms)  : 264, 276
     .   : milestone, 270,
    master - mean (268ms)  : 263, 273
     .   : milestone, 268,

    section CallTarget+Inlining+NGEN
    This PR (7743) - mean (863ms)  : 822, 904
     .   : milestone, 863,
    master - mean (855ms)  : 834, 876
     .   : milestone, 855,

Loading

@vandonr vandonr merged commit bb157e3 into master Oct 30, 2025
152 checks passed
@vandonr vandonr deleted the vandonr/process branch October 30, 2025 17:08
@github-actions github-actions bot added this to the vNext-v3 milestone Oct 30, 2025
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)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants