dd-trace-dotnet icon indicating copy to clipboard operation
dd-trace-dotnet copied to clipboard

Andrew/r and d/single span aspnetcore v3

Open andrewlock opened this issue 3 weeks ago • 3 comments

Summary of changes

Reason for change

Implementation details

Test coverage

Other details

andrewlock avatar Dec 05 '25 11:12 andrewlock

Benchmarks

Benchmarks Report for benchmark platform :snail:

Benchmarks for #7911 compared to master:

  • 2 benchmarks are slower, with geometric mean 1.435
  • 2 benchmarks have fewer allocations
  • 2 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 :heavy_check_mark: Fewer allocations :tada:

Fewer allocations :tada: in #7911

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6 KB 5.93 KB -62 B -1.03%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 11.1μs 52.4ns 203ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 14.4μs 22.1ns 85.5ns 0 0 0 5.71 KB
master StartStopWithChild net472 22.1μs 113ns 532ns 0.859 0.322 0 6 KB
#7911 StartStopWithChild net6.0 11.4μs 61.5ns 331ns 0 0 0 5.51 KB
#7911 StartStopWithChild netcoreapp3.1 14.3μs 41.5ns 155ns 0 0 0 5.7 KB
#7911 StartStopWithChild net472 22.4μs 115ns 563ns 0.874 0.219 0 5.93 KB
Benchmarks.Trace.AgentWriterBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 1.3ms 1.5μs 5.8μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.36ms 132ns 513ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.71ms 761ns 2.95μs 0 0 0 3.26 KB
#7911 WriteAndFlushEnrichedTraces net6.0 1.27ms 137ns 513ns 0 0 0 2.7 KB
#7911 WriteAndFlushEnrichedTraces netcoreapp3.1 1.36ms 351ns 1.36μs 0 0 0 2.7 KB
#7911 WriteAndFlushEnrichedTraces net472 1.71ms 1.33μs 5.14μs 0 0 0 3.26 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.11μs 5.97ns 32.2ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.42μs 1.84ns 7.14ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.01μs 1.15ns 3.97ns 0.192 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.19μs 38.3ns 195ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.06μs 45.1ns 191ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.87μs 4.29ns 16.6ns 0.748 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 324ns 1.62ns 7.25ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 393ns 2.12ns 12ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 306ns 0.106ns 0.412ns 0.0431 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.35μs 31.9ns 146ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.8μs 40.1ns 179ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.83μs 6.09ns 23.6ns 0.582 0 0 3.8 KB
#7911 AllCycleSimpleBody net6.0 1.1μs 5.97ns 33.8ns 0 0 0 1.22 KB
#7911 AllCycleSimpleBody netcoreapp3.1 1.42μs 7.43ns 40ns 0 0 0 1.2 KB
#7911 AllCycleSimpleBody net472 1.02μs 0.353ns 1.32ns 0.194 0 0 1.23 KB
#7911 AllCycleMoreComplexBody net6.0 7.17μs 36.9ns 181ns 0 0 0 4.72 KB
#7911 AllCycleMoreComplexBody netcoreapp3.1 8.95μs 47.3ns 232ns 0 0 0 4.62 KB
#7911 AllCycleMoreComplexBody net472 7.73μs 2.36ns 8.82ns 0.734 0 0 4.74 KB
#7911 ObjectExtractorSimpleBody net6.0 322ns 0.114ns 0.442ns 0 0 0 280 B
#7911 ObjectExtractorSimpleBody netcoreapp3.1 400ns 2.14ns 11.9ns 0 0 0 272 B
#7911 ObjectExtractorSimpleBody net472 337ns 0.0541ns 0.209ns 0.0441 0 0 281 B
#7911 ObjectExtractorMoreComplexBody net6.0 6.44μs 3.94ns 14.7ns 0 0 0 3.78 KB
#7911 ObjectExtractorMoreComplexBody netcoreapp3.1 7.89μs 37.5ns 155ns 0 0 0 3.69 KB
#7911 ObjectExtractorMoreComplexBody net472 6.69μs 1.89ns 7.08ns 0.601 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 75.6μs 188ns 727ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 97.3μs 229ns 885ns 0 0 0 32.4 KB
master EncodeArgs net472 109μs 69.7ns 270ns 4.94 0 0 32.5 KB
master EncodeLegacyArgs net6.0 145μs 11.4ns 39.6ns 0 0 0 2.14 KB
master EncodeLegacyArgs netcoreapp3.1 201μs 139ns 539ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 28.4ns 110ns 0 0 0 2.14 KB
#7911 EncodeArgs net6.0 76.1μs 207ns 801ns 0 0 0 32.4 KB
#7911 EncodeArgs netcoreapp3.1 97.4μs 343ns 1.33μs 0 0 0 32.4 KB
#7911 EncodeArgs net472 108μs 16.3ns 63.2ns 4.89 0 0 32.5 KB
#7911 EncodeLegacyArgs net6.0 142μs 224ns 868ns 0 0 0 2.14 KB
#7911 EncodeLegacyArgs netcoreapp3.1 201μs 52.1ns 195ns 0 0 0 2.14 KB
#7911 EncodeLegacyArgs net472 262μs 22ns 85.3ns 0 0 0 2.14 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 435μs 1.15μs 3.98μs 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 450μs 2.62μs 23.7μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 487μs 534ns 2μs 0 0 0 0 b
master RunWafRealisticBenchmarkWithAttack net6.0 315μs 1.53μs 6.13μs 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 371μs 4.37μs 42.5μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 365μs 422ns 1.52μs 0 0 0 0 b
#7911 RunWafRealisticBenchmark net6.0 423μs 1.09μs 3.93μs 0 0 0 4.55 KB
#7911 RunWafRealisticBenchmark netcoreapp3.1 470μs 3.02μs 28.7μs 0 0 0 4.48 KB
#7911 RunWafRealisticBenchmark net472 496μs 440ns 1.59μs 0 0 0 0 b
#7911 RunWafRealisticBenchmarkWithAttack net6.0 326μs 1.6μs 6.79μs 0 0 0 2.24 KB
#7911 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 345μs 2.62μs 24.9μs 0 0 0 2.22 KB
#7911 RunWafRealisticBenchmarkWithAttack net472 370μs 229ns 824ns 0 0 0 0 b
Benchmarks.Trace.AspNetCoreBenchmark - Unknown :shrug: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 84.5μs 112ns 402ns 0 0 0 18.97 KB
master SendRequest netcoreapp3.1 96.9μs 440ns 3.73μs 0 0 0 21.19 KB
master SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
#7911 SendRequest net6.0 85.1μs 313ns 1.17μs 0 0 0 18.97 KB
#7911 SendRequest netcoreapp3.1 97.6μs 493ns 3.27μs 0 0 0 21.18 KB
#7911 SendRequest net472 0ns 0ns 0ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Slower :warning: Same allocations :heavy_check_mark:

Slower :warning: in #7911

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice‑netcoreapp3.1 1.817 2,170,450.00 3,942,800.00
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 1.134 1,021,850.00 1,159,050.00

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 2ms 992ns 3.84μs 0 0 0 640 KB
master OriginalCharSlice netcoreapp3.1 2.17ms 4.16μs 26.3μs 0 0 0 640 KB
master OriginalCharSlice net472 2.59ms 1.32μs 5.13μs 0 0 0 638.98 KB
master OptimizedCharSlice net6.0 1.39ms 693ns 2.4μs 0 0 0 0 b
master OptimizedCharSlice netcoreapp3.1 1.73ms 6.07μs 39.8μs 0 0 0 0 b
master OptimizedCharSlice net472 1.92ms 1.29μs 5.01μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 1.02ms 303ns 1.13μs 0 0 0 0 b
master OptimizedCharSliceWithPool netcoreapp3.1 1.88ms 1.52μs 5.88μs 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.14ms 663ns 2.57μs 0 0 0 0 b
#7911 OriginalCharSlice net6.0 1.97ms 1.11μs 4.15μs 0 0 0 640 KB
#7911 OriginalCharSlice netcoreapp3.1 3.94ms 1.22μs 4.74μs 0 0 0 640.05 KB
#7911 OriginalCharSlice net472 2.65ms 656ns 2.54μs 0 0 0 638.98 KB
#7911 OptimizedCharSlice net6.0 1.51ms 604ns 2.26μs 0 0 0 0 b
#7911 OptimizedCharSlice netcoreapp3.1 1.67ms 7.26μs 47.6μs 0 0 0 0 b
#7911 OptimizedCharSlice net472 1.9ms 634ns 2.37μs 0 0 0 0 b
#7911 OptimizedCharSliceWithPool net6.0 1.16ms 518ns 2.01μs 0 0 0 0 b
#7911 OptimizedCharSliceWithPool netcoreapp3.1 1.86ms 1.93μs 7.49μs 0 0 0 0 b
#7911 OptimizedCharSliceWithPool net472 1.14ms 781ns 3.03μs 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7911

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.21 KB 55.78 KB 561 B 1.02%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 689μs 2.93μs 11.4μs 0 0 0 41.62 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 782μs 1.51μs 5.86μs 0 0 0 41.82 KB
master WriteAndFlushEnrichedTraces net472 856μs 3.4μs 12.7μs 4.46 0 0 55.21 KB
#7911 WriteAndFlushEnrichedTraces net6.0 738μs 480ns 1.86μs 0 0 0 41.7 KB
#7911 WriteAndFlushEnrichedTraces netcoreapp3.1 808μs 4.17μs 20.8μs 0 0 0 41.88 KB
#7911 WriteAndFlushEnrichedTraces net472 921μs 2.73μs 10.6μs 4.46 0 0 55.78 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.84μs 0.432ns 1.67ns 0 0 0 968 B
master ExecuteNonQuery netcoreapp3.1 2.51μs 12ns 46.5ns 0 0 0 960 B
master ExecuteNonQuery net472 2.63μs 1.31ns 5.07ns 0.145 0 0 931 B
#7911 ExecuteNonQuery net6.0 1.92μs 5.18ns 20ns 0 0 0 968 B
#7911 ExecuteNonQuery netcoreapp3.1 2.64μs 6.69ns 23.2ns 0 0 0 960 B
#7911 ExecuteNonQuery net472 2.84μs 2.02ns 7.82ns 0.142 0 0 931 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.74μs 9.08ns 46.3ns 0 0 0 952 B
master CallElasticsearch netcoreapp3.1 2.21μs 1.22ns 4.74ns 0 0 0 968 B
master CallElasticsearch net472 3.33μs 2.15ns 8.32ns 0.15 0 0 955 B
master CallElasticsearchAsync net6.0 1.79μs 2.28ns 8.83ns 0 0 0 928 B
master CallElasticsearchAsync netcoreapp3.1 2.42μs 11.8ns 50.2ns 0 0 0 1.02 KB
master CallElasticsearchAsync net472 3.59μs 9.61ns 37.2ns 0.144 0 0 1.01 KB
#7911 CallElasticsearch net6.0 1.75μs 7.79ns 30.2ns 0 0 0 952 B
#7911 CallElasticsearch netcoreapp3.1 2.27μs 4.18ns 16.2ns 0 0 0 968 B
#7911 CallElasticsearch net472 3.31μs 3.83ns 14.8ns 0.148 0 0 955 B
#7911 CallElasticsearchAsync net6.0 1.75μs 7.02ns 27.2ns 0 0 0 928 B
#7911 CallElasticsearchAsync netcoreapp3.1 2.47μs 12.2ns 51.8ns 0 0 0 1.02 KB
#7911 CallElasticsearchAsync net472 3.5μs 3.08ns 11.9ns 0.157 0 0 1.01 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.97μs 7.27ns 28.2ns 0 0 0 896 B
master ExecuteAsync netcoreapp3.1 2.36μs 6.06ns 22.7ns 0 0 0 896 B
master ExecuteAsync net472 2.62μs 5.48ns 21.2ns 0.129 0 0 858 B
#7911 ExecuteAsync net6.0 1.89μs 1.49ns 5.76ns 0 0 0 896 B
#7911 ExecuteAsync netcoreapp3.1 2.36μs 3.07ns 11.9ns 0 0 0 896 B
#7911 ExecuteAsync net472 2.56μs 2.7ns 10.1ns 0.127 0 0 858 B
Benchmarks.Trace.HttpClientBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 7.23μs 4.27ns 15.4ns 0 0 0 2.29 KB
master SendAsync netcoreapp3.1 8.54μs 20.6ns 79.8ns 0 0 0 2.83 KB
master SendAsync net472 12.2μs 9.46ns 36.6ns 0.488 0 0 3.08 KB
#7911 SendAsync net6.0 6.95μs 5.14ns 18.5ns 0 0 0 2.29 KB
#7911 SendAsync netcoreapp3.1 8.47μs 28.5ns 110ns 0 0 0 2.83 KB
#7911 SendAsync net472 12.1μs 5.69ns 21.3ns 0.484 0 0 3.08 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed :heavy_check_mark: More allocations :warning:

More allocations :warning: in #7911

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 257.78 KB 273.92 KB 16.14 KB 6.26%

Fewer allocations :tada: in #7911

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 277.49 KB 272.53 KB -4.96 KB -1.79%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 44.1μs 218ns 924ns 0 0 0 42.51 KB
master StringConcatBenchmark netcoreapp3.1 49.2μs 184ns 664ns 0 0 0 42.54 KB
master StringConcatBenchmark net472 57.8μs 291ns 1.24μs 0 0 0 49.15 KB
master StringConcatAspectBenchmark net6.0 466μs 2.11μs 7.61μs 0 0 0 257.78 KB
master StringConcatAspectBenchmark netcoreapp3.1 472μs 6.25μs 62.2μs 0 0 0 277.49 KB
master StringConcatAspectBenchmark net472 396μs 1.93μs 8.19μs 0 0 0 270.34 KB
#7911 StringConcatBenchmark net6.0 44μs 256ns 2.02μs 0 0 0 42.51 KB
#7911 StringConcatBenchmark netcoreapp3.1 49.2μs 255ns 1.17μs 0 0 0 42.54 KB
#7911 StringConcatBenchmark net472 56.6μs 282ns 1.29μs 0 0 0 49.15 KB
#7911 StringConcatAspectBenchmark net6.0 487μs 2.36μs 9.43μs 0 0 0 273.92 KB
#7911 StringConcatAspectBenchmark netcoreapp3.1 462μs 6.21μs 61.4μs 0 0 0 272.53 KB
#7911 StringConcatAspectBenchmark net472 406μs 2.25μs 19.2μs 0 0 0 270.34 KB
Benchmarks.Trace.ILoggerBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 2.67μs 0.263ns 1.02ns 0 0 0 1.69 KB
master EnrichedLog netcoreapp3.1 3.64μs 16.9ns 67.5ns 0 0 0 1.7 KB
master EnrichedLog net472 4.02μs 4.34ns 16.8ns 0.242 0 0 1.6 KB
#7911 EnrichedLog net6.0 2.7μs 12.5ns 50.1ns 0 0 0 1.69 KB
#7911 EnrichedLog netcoreapp3.1 3.53μs 17.2ns 68.9ns 0 0 0 1.7 KB
#7911 EnrichedLog net472 3.79μs 5.57ns 21.6ns 0.245 0 0 1.6 KB
Benchmarks.Trace.Log4netBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 126μs 110ns 397ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 129μs 241ns 934ns 0 0 0 4.31 KB
master EnrichedLog net472 166μs 32.6ns 126ns 0 0 0 4.51 KB
#7911 EnrichedLog net6.0 125μs 50.5ns 195ns 0 0 0 4.31 KB
#7911 EnrichedLog netcoreapp3.1 130μs 478ns 1.85μs 0 0 0 4.31 KB
#7911 EnrichedLog net472 167μs 161ns 625ns 0 0 0 4.51 KB
Benchmarks.Trace.NLogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 5.06μs 17.6ns 68.3ns 0 0 0 2.24 KB
master EnrichedLog netcoreapp3.1 7μs 26.6ns 103ns 0 0 0 2.26 KB
master EnrichedLog net472 7.44μs 6.33ns 24.5ns 0.298 0 0 2.05 KB
#7911 EnrichedLog net6.0 4.93μs 23ns 85.9ns 0 0 0 2.24 KB
#7911 EnrichedLog netcoreapp3.1 6.79μs 22.8ns 85.1ns 0 0 0 2.26 KB
#7911 EnrichedLog net472 7.59μs 4.67ns 18.1ns 0.302 0 0 2.05 KB
Benchmarks.Trace.RedisBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.95μs 9.85ns 42.9ns 0 0 0 1.12 KB
master SendReceive netcoreapp3.1 2.44μs 8.88ns 34.4ns 0 0 0 1.14 KB
master SendReceive net472 2.91μs 1.76ns 6.33ns 0.176 0 0 1.12 KB
#7911 SendReceive net6.0 1.94μs 7.3ns 28.3ns 0 0 0 1.12 KB
#7911 SendReceive netcoreapp3.1 2.61μs 12.3ns 50.6ns 0 0 0 1.14 KB
#7911 SendReceive net472 2.83μs 0.85ns 3.29ns 0.17 0 0 1.12 KB
Benchmarks.Trace.SerilogBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.4μs 9.42ns 36.5ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.47μs 11.1ns 43ns 0 0 0 1.63 KB
master EnrichedLog net472 6.56μs 12.4ns 48.1ns 0.294 0 0 2.03 KB
#7911 EnrichedLog net6.0 4.4μs 19.3ns 74.8ns 0 0 0 1.58 KB
#7911 EnrichedLog netcoreapp3.1 5.64μs 13.2ns 51ns 0 0 0 1.63 KB
#7911 EnrichedLog net472 6.62μs 9.14ns 35.4ns 0.295 0 0 2.03 KB
Benchmarks.Trace.SpanBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartFinishSpan net6.0 759ns 4.13ns 22.6ns 0 0 0 520 B
master StartFinishSpan netcoreapp3.1 978ns 1.23ns 4.77ns 0 0 0 520 B
master StartFinishSpan net472 884ns 0.522ns 2.02ns 0.0795 0 0 522 B
master StartFinishScope net6.0 922ns 2.71ns 10.5ns 0 0 0 640 B
master StartFinishScope netcoreapp3.1 1.12μs 3.55ns 13.3ns 0 0 0 640 B
master StartFinishScope net472 1.08μs 0.534ns 2.07ns 0.0931 0 0 602 B
master StartFinishTwoScopes net6.0 1.75μs 3.73ns 13.9ns 0 0 0 1.19 KB
master StartFinishTwoScopes netcoreapp3.1 2.22μs 11.5ns 52.8ns 0 0 0 1.19 KB
master StartFinishTwoScopes net472 2.12μs 2.73ns 10.6ns 0.17 0 0 1.08 KB
#7911 StartFinishSpan net6.0 837ns 1.47ns 5.68ns 0 0 0 520 B
#7911 StartFinishSpan netcoreapp3.1 956ns 5.24ns 29.6ns 0 0 0 520 B
#7911 StartFinishSpan net472 902ns 0.342ns 1.32ns 0.0814 0 0 522 B
#7911 StartFinishScope net6.0 926ns 4.46ns 18.9ns 0 0 0 640 B
#7911 StartFinishScope netcoreapp3.1 1.16μs 5.82ns 24.7ns 0 0 0 640 B
#7911 StartFinishScope net472 1.1μs 0.329ns 1.27ns 0.0937 0 0 602 B
#7911 StartFinishTwoScopes net6.0 1.89μs 8.84ns 35.4ns 0 0 0 1.19 KB
#7911 StartFinishTwoScopes netcoreapp3.1 2.23μs 11.3ns 52.9ns 0 0 0 1.19 KB
#7911 StartFinishTwoScopes net472 2.18μs 1.21ns 4.69ns 0.163 0 0 1.08 KB
Benchmarks.Trace.TraceAnnotationsBenchmark - Same speed :heavy_check_mark: Same allocations :heavy_check_mark:

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunOnMethodBegin net6.0 1.09μs 4.82ns 18.7ns 0 0 0 640 B
master RunOnMethodBegin netcoreapp3.1 1.41μs 7.35ns 36.8ns 0 0 0 640 B
master RunOnMethodBegin net472 1.42μs 0.409ns 1.47ns 0.0926 0 0 602 B
#7911 RunOnMethodBegin net6.0 1.08μs 5.01ns 19.4ns 0 0 0 640 B
#7911 RunOnMethodBegin netcoreapp3.1 1.4μs 5.62ns 20.3ns 0 0 0 640 B
#7911 RunOnMethodBegin net472 1.43μs 1.65ns 6.38ns 0.0929 0 0 602 B

pr-commenter[bot] avatar Dec 05 '25 12:12 pr-commenter[bot]

Execution-Time Benchmarks Report :stopwatch:

Execution-time results for samples comparing This PR (7911) 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
duration68.06 ± (68.04 - 68.27) ms68.16 ± (68.16 - 68.39) ms+0.1%✅⬆️
.NET Framework 4.8 - Bailout
duration71.87 ± (71.76 - 71.92) ms71.97 ± (71.83 - 72.05) ms+0.1%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration999.92 ± (1003.07 - 1010.54) ms1005.57 ± (1008.74 - 1016.03) ms+0.6%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms21.93 ± (21.89 - 21.97) ms21.89 ± (21.86 - 21.92) ms-0.2%
process.time_to_main_ms78.38 ± (78.24 - 78.53) ms78.42 ± (78.27 - 78.57) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.90 ± (10.90 - 10.91) MB10.92 ± (10.92 - 10.92) MB+0.1%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms21.80 ± (21.77 - 21.82) ms21.83 ± (21.81 - 21.85) ms+0.2%✅⬆️
process.time_to_main_ms79.56 ± (79.46 - 79.65) ms79.69 ± (79.60 - 79.78) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.94 - 10.94) MB10.97 ± (10.97 - 10.97) MB+0.3%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms211.00 ± (209.51 - 212.48) ms210.87 ± (209.49 - 212.26) ms-0.1%
process.time_to_main_ms471.11 ± (470.58 - 471.64) ms470.66 ± (470.09 - 471.22) ms-0.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.04 ± (48.02 - 48.05) MB48.19 ± (48.17 - 48.21) MB+0.3%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms20.63 ± (20.60 - 20.66) ms20.68 ± (20.65 - 20.71) ms+0.2%✅⬆️
process.time_to_main_ms67.79 ± (67.65 - 67.92) ms68.08 ± (67.96 - 68.20) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.60 ± (10.60 - 10.60) MB10.63 ± (10.63 - 10.63) MB+0.3%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.65 ± (20.62 - 20.67) ms20.54 ± (20.52 - 20.57) ms-0.5%
process.time_to_main_ms68.73 ± (68.67 - 68.78) ms68.69 ± (68.64 - 68.73) ms-0.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.66 - 10.67) MB10.68 ± (10.68 - 10.69) MB+0.2%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms199.18 ± (197.97 - 200.40) ms246.64 ± (244.88 - 248.40) ms+23.8%✅⬆️
process.time_to_main_ms437.63 ± (437.05 - 438.22) ms438.67 ± (438.25 - 439.10) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.15 ± (48.08 - 48.23) MB48.63 ± (48.60 - 48.66) MB+1.0%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.5%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms18.74 ± (18.71 - 18.76) ms18.82 ± (18.78 - 18.85) ms+0.4%✅⬆️
process.time_to_main_ms66.79 ± (66.70 - 66.89) ms67.18 ± (67.05 - 67.30) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.68 ± (7.67 - 7.68) MB+0.2%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.69 ± (18.67 - 18.71) ms18.77 ± (18.74 - 18.79) ms+0.4%✅⬆️
process.time_to_main_ms67.82 ± (67.76 - 67.88) ms68.15 ± (68.09 - 68.21) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.72 ± (7.71 - 7.73) MB7.77 ± (7.75 - 7.78) MB+0.6%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms177.94 ± (176.98 - 178.90) ms177.58 ± (176.67 - 178.48) ms-0.2%
process.time_to_main_ms422.98 ± (422.46 - 423.50) ms423.56 ± (423.05 - 424.08) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.24 ± (36.20 - 36.28) MB36.38 ± (36.34 - 36.42) MB+0.4%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.0%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration192.16 ± (192.34 - 193.18) ms194.47 ± (194.68 - 195.71) ms+1.2%✅⬆️
.NET Framework 4.8 - Bailout
duration196.86 ± (196.68 - 197.34) ms196.93 ± (196.96 - 197.82) ms+0.0%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1109.63 ± (1113.57 - 1122.70) ms1107.28 ± (1107.55 - 1114.91) ms-0.2%
.NET Core 3.1 - Baseline
process.internal_duration_ms188.06 ± (187.63 - 188.49) ms188.70 ± (188.29 - 189.11) ms+0.3%✅⬆️
process.time_to_main_ms80.56 ± (80.33 - 80.78) ms80.66 ± (80.43 - 80.89) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.06 ± (16.04 - 16.09) MB16.11 ± (16.09 - 16.14) MB+0.3%✅⬆️
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (19 - 20)+0.1%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms186.58 ± (186.28 - 186.87) ms187.51 ± (187.16 - 187.86) ms+0.5%✅⬆️
process.time_to_main_ms81.71 ± (81.60 - 81.82) ms81.97 ± (81.80 - 82.15) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.17 ± (16.14 - 16.20) MB16.17 ± (16.14 - 16.20) MB-0.0%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.1%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms403.34 ± (400.15 - 406.53) ms401.82 ± (398.99 - 404.65) ms-0.4%
process.time_to_main_ms474.66 ± (474.14 - 475.18) ms475.47 ± (474.79 - 476.15) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.39 ± (58.24 - 58.54) MB58.85 ± (58.74 - 58.97) MB+0.8%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms191.87 ± (191.58 - 192.16) ms191.50 ± (191.15 - 191.85) ms-0.2%
process.time_to_main_ms69.76 ± (69.60 - 69.92) ms69.68 ± (69.53 - 69.82) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.17 ± (16.02 - 16.31) MB16.04 ± (15.89 - 16.20) MB-0.8%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.5%
.NET 6 - Bailout
process.internal_duration_ms190.83 ± (190.58 - 191.07) ms190.95 ± (190.62 - 191.28) ms+0.1%✅⬆️
process.time_to_main_ms70.46 ± (70.38 - 70.54) ms70.64 ± (70.54 - 70.74) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.94 ± (15.78 - 16.11) MB15.84 ± (15.68 - 16.01) MB-0.6%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms404.23 ± (402.40 - 406.05) ms452.82 ± (450.91 - 454.74) ms+12.0%✅⬆️
process.time_to_main_ms443.40 ± (442.76 - 444.05) ms445.29 ± (444.78 - 445.80) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.02 ± (58.87 - 59.16) MB58.39 ± (58.29 - 58.49) MB-1.1%
runtime.dotnet.threads.count30 ± (29 - 30)29 ± (29 - 30)-0.1%
.NET 8 - Baseline
process.internal_duration_ms189.29 ± (189.04 - 189.54) ms190.16 ± (189.79 - 190.54) ms+0.5%✅⬆️
process.time_to_main_ms69.16 ± (69.00 - 69.32) ms69.61 ± (69.39 - 69.84) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.75 ± (11.71 - 11.78) MB11.75 ± (11.72 - 11.77) MB-0.0%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.4%
.NET 8 - Bailout
process.internal_duration_ms189.39 ± (189.02 - 189.76) ms189.09 ± (188.83 - 189.35) ms-0.2%
process.time_to_main_ms70.27 ± (70.13 - 70.41) ms70.38 ± (70.29 - 70.47) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.78 ± (11.74 - 11.81) MB11.85 ± (11.81 - 11.88) MB+0.6%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.3%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms365.35 ± (363.92 - 366.79) ms362.56 ± (360.95 - 364.18) ms-0.8%
process.time_to_main_ms428.97 ± (428.33 - 429.62) ms430.32 ± (429.60 - 431.05) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed48.00 ± (47.97 - 48.03) MB47.98 ± (47.95 - 48.02) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.6%✅⬆️
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 (7911) - mean (68ms)  : 67, 70
    master - mean (68ms)  : 67, 70

    section Bailout
    This PR (7911) - mean (72ms)  : 71, 73
    master - mean (72ms)  : 71, 73

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (1,012ms)  : 960, 1065
    master - mean (1,007ms)  : 954, 1060

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 (7911) - mean (106ms)  : 103, 108
    master - mean (106ms)  : 103, 108

    section Bailout
    This PR (7911) - mean (106ms)  : 105, 108
    master - mean (106ms)  : 105, 108

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (711ms)  : 672, 749
    master - mean (710ms)  : 680, 740

FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7911) - mean (93ms)  : 91, 96
    master - mean (93ms)  : 91, 95

    section Bailout
    This PR (7911) - mean (94ms)  : 93, 95
    master - mean (94ms)  : 93, 95

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (709ms)  : crit, 676, 741
    master - mean (663ms)  : 641, 685

FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7911) - mean (92ms)  : 90, 94
    master - mean (91ms)  : 90, 93

    section Bailout
    This PR (7911) - mean (93ms)  : 92, 94
    master - mean (92ms)  : 91, 94

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (628ms)  : 612, 644
    master - mean (628ms)  : 615, 641

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 (7911) - mean (195ms)  : 187, 203
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7911) - mean (197ms)  : 193, 202
    master - mean (197ms)  : 194, 200

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (1,111ms)  : 1059, 1163
    master - mean (1,118ms)  : 1051, 1185

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 (7911) - mean (278ms)  : 270, 285
    master - mean (277ms)  : 271, 283

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

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (909ms)  : 857, 960
    master - mean (909ms)  : 853, 965

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

    section Bailout
    This PR (7911) - mean (270ms)  : 266, 273
    master - mean (269ms)  : 266, 272

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (926ms)  : 892, 959
    master - mean (878ms)  : 846, 911

HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7911) - mean (269ms)  : 262, 276
    master - mean (268ms)  : 264, 271

    section Bailout
    This PR (7911) - mean (269ms)  : 266, 272
    master - mean (269ms)  : 263, 275

    section CallTarget+Inlining+NGEN
    This PR (7911) - mean (822ms)  : 805, 839
    master - mean (826ms)  : 800, 853

⚠️ Tests

Fix all issues with Cursor

⚠️ Warnings

🧪 90 Tests failed

MeetsAllAspNetCoreMvcExpectations from Datadog.Trace.ClrProfiler.IntegrationTests.AspNetCore.AspNetCoreMvc31TestsCallTargetSingleSpan (Datadog) (Fix with Cursor)

Verified path: D:\a\_work\1\s\tracer\test\Datadog.Trace.ClrProfiler.IntegrationTests\..\snapshots\AspNetCoreMvc31Tests.Single.__path=__statusCode=200.verified.txt
MeetsAllAspNetCoreMvcExpectations from Datadog.Trace.ClrProfiler.IntegrationTests.AspNetCore.AspNetCoreMvc31TestsCallTargetSingleSpan (Datadog) (Fix with Cursor)

Verified path: D:\a\_work\1\s\tracer\test\Datadog.Trace.ClrProfiler.IntegrationTests\..\snapshots\AspNetCoreMvc31Tests.Single.__path=_status-code_203_statusCode=203.verified.txt
MeetsAllAspNetCoreMvcExpectations from Datadog.Trace.ClrProfiler.IntegrationTests.AspNetCore.AspNetCoreMvc31TestsCallTargetSingleSpan (Datadog) (Fix with Cursor)

Verified path: D:\a\_work\1\s\tracer\test\Datadog.Trace.ClrProfiler.IntegrationTests\..\snapshots\AspNetCoreMvc31Tests.Single.__path=_bad-request_statusCode=500.verified.txt
View all

ℹ️ Info

❄️ No new flaky tests detected

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 49d4ac4 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

datadog-official[bot] avatar Dec 05 '25 13:12 datadog-official[bot]