Skip to content

Conversation

@bouwkast
Copy link
Collaborator

@bouwkast bouwkast commented Nov 5, 2025

Summary of changes

Adds some additional documentation around updating the Windows GitLab image, we needed to do this recently and the documentation for it was a bit sparse, and we've had to do it also for the .NET updates recently.

Reason for change

Try to add some documentation on how to do it.

Implementation details

I based this off of our previous example PRs, some slack messages, and existing documentation and asked Claude to do the rest.

Test coverage

🙈

Other details

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

I figure we can try to follow this in the .NET 10 upgrade next week to see if the steps are accurate as I've never actually done them 😛

@bouwkast bouwkast requested a review from a team as a code owner November 5, 2025 14:30
@bouwkast bouwkast added the AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos label Nov 5, 2025
@github-actions github-actions bot added the area:builds project files, build scripts, pipelines, versioning, releases, packages label Nov 5, 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.

Great, thanks! I was actually thinking we should likely move this image to be explicitly built in https://github.com/DataDog/images, instead of just mirrored, but this is a good first step!

Co-authored-by: Andrew Lock <[email protected]>
@pr-commenter
Copy link

pr-commenter bot commented Nov 5, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7782 compared to master:

  • 1 benchmarks are slower, with geometric mean 2.448
  • 6 benchmarks have fewer allocations
  • 3 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

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

Allocation changes below 0.5% are ignored.

Benchmark details

Benchmarks.Trace.ActivityBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 5.99 KB 6.06 KB 72 B 1.20%

Fewer allocations 🎉 in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net6.0 5.52 KB 5.48 KB -40 B -0.73%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.3μs 42.4ns 175ns 0 0 0 5.52 KB
master StartStopWithChild netcoreapp3.1 13.7μs 65.3ns 269ns 0 0 0 5.71 KB
master StartStopWithChild net472 21.9μs 110ns 517ns 1 0.401 0.1 5.99 KB
#7782 StartStopWithChild net6.0 10.9μs 57.5ns 287ns 0 0 0 5.48 KB
#7782 StartStopWithChild netcoreapp3.1 13.6μs 70ns 350ns 0 0 0 5.71 KB
#7782 StartStopWithChild net472 22.3μs 125ns 801ns 1.07 0.321 0.107 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 953μs 425ns 1.59μs 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.05ms 926ns 3.34μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.24ms 505ns 1.96μs 0 0 0 3.31 KB
#7782 WriteAndFlushEnrichedTraces net6.0 924μs 157ns 608ns 0 0 0 2.71 KB
#7782 WriteAndFlushEnrichedTraces netcoreapp3.1 1.05ms 900ns 3.49μs 0 0 0 2.7 KB
#7782 WriteAndFlushEnrichedTraces net472 1.2ms 193ns 722ns 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 5.79ns 32.3ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.41μs 7.44ns 38.7ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.03μs 0.428ns 1.66ns 0.191 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7μs 35.3ns 150ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 8.92μs 33.7ns 131ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.65μs 7.71ns 29.9ns 0.729 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 319ns 0.0645ns 0.25ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 398ns 1.93ns 7.96ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 295ns 0.0671ns 0.26ns 0.0432 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.39μs 19.8ns 76.7ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 38.8ns 165ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.72μs 2.45ns 9.48ns 0.601 0 0 3.8 KB
#7782 AllCycleSimpleBody net6.0 1.08μs 5.97ns 38.7ns 0 0 0 1.22 KB
#7782 AllCycleSimpleBody netcoreapp3.1 1.4μs 0.8ns 3.1ns 0 0 0 1.2 KB
#7782 AllCycleSimpleBody net472 1.03μs 0.627ns 2.34ns 0.192 0 0 1.23 KB
#7782 AllCycleMoreComplexBody net6.0 7.15μs 33.2ns 129ns 0 0 0 4.72 KB
#7782 AllCycleMoreComplexBody netcoreapp3.1 9.02μs 42.6ns 170ns 0 0 0 4.62 KB
#7782 AllCycleMoreComplexBody net472 7.66μs 5ns 19.4ns 0.727 0 0 4.74 KB
#7782 ObjectExtractorSimpleBody net6.0 314ns 1.74ns 8.71ns 0 0 0 280 B
#7782 ObjectExtractorSimpleBody netcoreapp3.1 412ns 2.21ns 11.3ns 0 0 0 272 B
#7782 ObjectExtractorSimpleBody net472 311ns 1.71ns 9.97ns 0.0434 0 0 281 B
#7782 ObjectExtractorMoreComplexBody net6.0 6.41μs 1.41ns 5.29ns 0 0 0 3.78 KB
#7782 ObjectExtractorMoreComplexBody netcoreapp3.1 7.87μs 34.8ns 126ns 0 0 0 3.69 KB
#7782 ObjectExtractorMoreComplexBody net472 6.72μs 0.899ns 3.48ns 0.571 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 77μs 20.4ns 76.4ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.7μs 248ns 961ns 0 0 0 32.4 KB
master EncodeArgs net472 113μs 6.99ns 26.2ns 5.07 0 0 32.51 KB
master EncodeLegacyArgs net6.0 146μs 197ns 765ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 197μs 77ns 288ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 263μs 125ns 484ns 0 0 0 2.16 KB
#7782 EncodeArgs net6.0 77μs 124ns 481ns 0 0 0 32.4 KB
#7782 EncodeArgs netcoreapp3.1 96.4μs 197ns 762ns 0 0 0 32.4 KB
#7782 EncodeArgs net472 112μs 14.5ns 54.3ns 5.06 0 0 32.51 KB
#7782 EncodeLegacyArgs net6.0 145μs 63.6ns 229ns 0 0 0 2.15 KB
#7782 EncodeLegacyArgs netcoreapp3.1 198μs 123ns 442ns 0 0 0 2.14 KB
#7782 EncodeLegacyArgs net472 266μs 23.9ns 92.4ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7782

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.448 294,986.01 721,993.45

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 417μs 63.4ns 237ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 411μs 90.8ns 315ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 441μs 85.1ns 319ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 291μs 79.9ns 288ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 295μs 83ns 299ns 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 317μs 40.2ns 156ns 0 0 0 2.29 KB
#7782 RunWafRealisticBenchmark net6.0 400μs 95.9ns 359ns 0 0 0 4.55 KB
#7782 RunWafRealisticBenchmark netcoreapp3.1 409μs 317ns 1.23μs 0 0 0 4.48 KB
#7782 RunWafRealisticBenchmark net472 427μs 54.6ns 211ns 0 0 0 4.66 KB
#7782 RunWafRealisticBenchmarkWithAttack net6.0 287μs 70.4ns 273ns 0 0 0 2.24 KB
#7782 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 712μs 5.03μs 50.3μs 0 0 0 2.22 KB
#7782 RunWafRealisticBenchmarkWithAttack net472 311μs 35.5ns 137ns 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.6μs 27.2ns 106ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.6μs 101ns 379ns 0 0 0 17.42 KB
master SendRequest net472 0.00136ns 0.000796ns 0.00298ns 0 0 0 0 b
#7782 SendRequest net6.0 61.6μs 87ns 337ns 0 0 0 14.52 KB
#7782 SendRequest netcoreapp3.1 72.9μs 374ns 1.83μs 0 0 0 17.42 KB
#7782 SendRequest net472 0.00304ns 0.00176ns 0.00659ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ Fewer allocations 🎉

Fewer allocations 🎉 in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 7 B 4 B -3 B -42.86%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 3 B 1 B -2 B -66.67%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.92ms 1.96μs 7.35μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.21ms 6.9μs 25.8μs 0 0 0 640 KB
master OriginalCharSlice net472 2.55ms 80.9ns 303ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.39ms 182ns 705ns 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.68ms 1.67μs 6.45μs 0 0 0 1 B
master OptimizedCharSlice net472 2.01ms 283ns 1.1μs 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 857μs 101ns 393ns 0 0 0 3 B
master OptimizedCharSliceWithPool netcoreapp3.1 808μs 62.5ns 242ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.13ms 91.4ns 354ns 0 0 0 0 b
#7782 OriginalCharSlice net6.0 1.92ms 4.26μs 15.9μs 0 0 0 640 KB
#7782 OriginalCharSlice netcoreapp3.1 2.1ms 7.36μs 28.5μs 0 0 0 640 KB
#7782 OriginalCharSlice net472 2.65ms 387ns 1.5μs 100 0 0 641.95 KB
#7782 OptimizedCharSlice net6.0 1.46ms 231ns 864ns 0 0 0 4 B
#7782 OptimizedCharSlice netcoreapp3.1 1.69ms 583ns 2.26μs 0 0 0 1 B
#7782 OptimizedCharSlice net472 2ms 260ns 1.01μs 0 0 0 0 b
#7782 OptimizedCharSliceWithPool net6.0 830μs 16.6ns 59.7ns 0 0 0 1 B
#7782 OptimizedCharSliceWithPool netcoreapp3.1 813μs 66.8ns 259ns 0 0 0 1 B
#7782 OptimizedCharSliceWithPool net472 1.14ms 42.1ns 152ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 41.84 KB 42.39 KB 554 B 1.32%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 680μs 1.96μs 7.31μs 0 0 0 41.61 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 696μs 1.49μs 5.15μs 0 0 0 41.84 KB
master WriteAndFlushEnrichedTraces net472 869μs 2.97μs 11.5μs 8.33 0 0 56.49 KB
#7782 WriteAndFlushEnrichedTraces net6.0 733μs 2.97μs 11.5μs 0 0 0 41.54 KB
#7782 WriteAndFlushEnrichedTraces netcoreapp3.1 735μs 3.04μs 11.8μs 0 0 0 42.39 KB
#7782 WriteAndFlushEnrichedTraces net472 953μs 4.08μs 15.8μs 8.93 0 0 56.43 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.91μs 4.03ns 15.6ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.66μs 9.81ns 38ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.9μs 3.07ns 11.9ns 0.145 0.0145 0 987 B
#7782 ExecuteNonQuery net6.0 1.92μs 10.2ns 53.8ns 0 0 0 1.02 KB
#7782 ExecuteNonQuery netcoreapp3.1 2.78μs 13.4ns 55.2ns 0 0 0 1.02 KB
#7782 ExecuteNonQuery net472 2.91μs 2.43ns 9.08ns 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 8.1ns 31.4ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.2μs 10.5ns 44.4ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.6μs 3ns 11.6ns 0.162 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.84μs 8.73ns 33.8ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.4μs 11.6ns 46.4ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.67μs 4.86ns 18.8ns 0.165 0 0 1.1 KB
#7782 CallElasticsearch net6.0 1.76μs 4.78ns 18.5ns 0 0 0 1.03 KB
#7782 CallElasticsearch netcoreapp3.1 2.22μs 11.1ns 52.2ns 0 0 0 1.03 KB
#7782 CallElasticsearch net472 3.64μs 2.52ns 9.76ns 0.164 0 0 1.04 KB
#7782 CallElasticsearchAsync net6.0 2.01μs 5.86ns 22.7ns 0 0 0 1.01 KB
#7782 CallElasticsearchAsync netcoreapp3.1 2.36μs 11.1ns 43.1ns 0 0 0 1.08 KB
#7782 CallElasticsearchAsync net472 3.67μs 2.74ns 9.86ns 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.84μs 9.26ns 40.3ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.43μs 11.3ns 45.2ns 0 0 0 952 B
master ExecuteAsync net472 2.54μs 3.55ns 13.8ns 0.14 0 0 915 B
#7782 ExecuteAsync net6.0 1.88μs 7.64ns 28.6ns 0 0 0 952 B
#7782 ExecuteAsync netcoreapp3.1 2.4μs 2.81ns 10.9ns 0 0 0 952 B
#7782 ExecuteAsync net472 2.55μs 0.77ns 2.98ns 0.14 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.08μs 8.57ns 33.2ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.87μs 33.1ns 128ns 0 0 0 2.9 KB
master SendAsync net472 12.3μs 8.57ns 32.1ns 0.493 0 0 3.18 KB
#7782 SendAsync net6.0 6.85μs 10.4ns 38.9ns 0 0 0 2.36 KB
#7782 SendAsync netcoreapp3.1 8.94μs 17ns 65.7ns 0 0 0 2.9 KB
#7782 SendAsync net472 12.2μs 11.6ns 44.9ns 0.489 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.59 KB 44.84 KB 1.25 KB 2.86%

Fewer allocations 🎉 in #7782

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 255.14 KB 246.71 KB -8.42 KB -3.30%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 45.5 KB 42.87 KB -2.63 KB -5.78%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 278.42 KB 258.98 KB -19.44 KB -6.98%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 41.7μs 160ns 578ns 0 0 0 43.59 KB
master StringConcatBenchmark netcoreapp3.1 54.9μs 944ns 9.39μs 0 0 0 45.5 KB
master StringConcatBenchmark net472 57.6μs 91.6ns 330ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 474μs 1.52μs 5.28μs 0 0 0 278.42 KB
master StringConcatAspectBenchmark netcoreapp3.1 488μs 2.49μs 10.8μs 0 0 0 255.14 KB
master StringConcatAspectBenchmark net472 409μs 2.31μs 15.5μs 0 0 0 278.53 KB
#7782 StringConcatBenchmark net6.0 42.1μs 175ns 607ns 0 0 0 44.84 KB
#7782 StringConcatBenchmark netcoreapp3.1 47.9μs 300ns 2.84μs 0 0 0 42.87 KB
#7782 StringConcatBenchmark net472 58.8μs 167ns 646ns 0 0 0 65.54 KB
#7782 StringConcatAspectBenchmark net6.0 448μs 2.11μs 8.45μs 0 0 0 258.98 KB
#7782 StringConcatAspectBenchmark netcoreapp3.1 495μs 2.35μs 9.41μs 0 0 0 246.71 KB
#7782 StringConcatAspectBenchmark net472 407μs 2.31μs 16.2μ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.61μs 14ns 72.6ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.69μs 17.6ns 70.4ns 0 0 0 1.7 KB
master EnrichedLog net472 4.01μs 9.66ns 37.4ns 0.242 0 0 1.64 KB
#7782 EnrichedLog net6.0 2.65μs 7.68ns 29.7ns 0 0 0 1.7 KB
#7782 EnrichedLog netcoreapp3.1 3.68μs 17.2ns 66.5ns 0 0 0 1.7 KB
#7782 EnrichedLog net472 4.01μs 5.01ns 19.4ns 0.24 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 122μs 97.1ns 350ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 129μs 392ns 1.52μs 0 0 0 4.31 KB
master EnrichedLog net472 167μs 62ns 232ns 0 0 0 4.51 KB
#7782 EnrichedLog net6.0 123μs 108ns 403ns 0 0 0 4.31 KB
#7782 EnrichedLog netcoreapp3.1 126μs 137ns 494ns 0 0 0 4.31 KB
#7782 EnrichedLog net472 167μs 37.2ns 139ns 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μs 16ns 61.9ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.84μs 12.2ns 45.5ns 0 0 0 2.26 KB
master EnrichedLog net472 7.52μs 6.02ns 22.5ns 0.302 0 0 2.08 KB
#7782 EnrichedLog net6.0 5μs 2.85ns 11ns 0 0 0 2.26 KB
#7782 EnrichedLog netcoreapp3.1 6.93μs 13.3ns 51.7ns 0 0 0 2.26 KB
#7782 EnrichedLog net472 7.86μs 9.07ns 35.1ns 0.315 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.02μs 9.72ns 37.6ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.61μs 13.1ns 58.5ns 0 0 0 1.2 KB
master SendReceive net472 3.09μs 2.48ns 9.61ns 0.185 0 0 1.2 KB
#7782 SendReceive net6.0 1.97μs 4.3ns 16.7ns 0 0 0 1.2 KB
#7782 SendReceive netcoreapp3.1 2.72μs 8.97ns 34.7ns 0 0 0 1.2 KB
#7782 SendReceive net472 3.08μs 3.8ns 13.7ns 0.185 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.09μs 17.4ns 67.5ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.8μs 11.4ns 44.2ns 0 0 0 1.63 KB
master EnrichedLog net472 6.73μs 9.84ns 38.1ns 0.303 0 0 2.03 KB
#7782 EnrichedLog net6.0 4.25μs 3.88ns 15ns 0 0 0 1.58 KB
#7782 EnrichedLog netcoreapp3.1 5.53μs 13.2ns 51.3ns 0 0 0 1.63 KB
#7782 EnrichedLog net472 6.49μs 8.76ns 33.9ns 0.293 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 3.95ns 18.5ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 959ns 4.95ns 23.2ns 0 0 0 576 B
master StartFinishSpan net472 927ns 0.386ns 1.5ns 0.0885 0 0 578 B
master StartFinishScope net6.0 905ns 4.85ns 26.1ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.19μs 2.53ns 9.8ns 0 0 0 696 B
master StartFinishScope net472 1.12μs 0.538ns 2.01ns 0.102 0 0 658 B
#7782 StartFinishSpan net6.0 758ns 3.94ns 18.9ns 0 0 0 576 B
#7782 StartFinishSpan netcoreapp3.1 985ns 3.6ns 13.9ns 0 0 0 576 B
#7782 StartFinishSpan net472 924ns 0.524ns 1.96ns 0.0876 0 0 578 B
#7782 StartFinishScope net6.0 982ns 0.222ns 0.799ns 0 0 0 696 B
#7782 StartFinishScope netcoreapp3.1 1.21μs 6.29ns 25.9ns 0 0 0 696 B
#7782 StartFinishScope net472 1.12μs 0.722ns 2.8ns 0.101 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.08μs 5.76ns 28.8ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.47μs 7.42ns 32.3ns 0 0 0 696 B
master RunOnMethodBegin net472 1.46μs 0.673ns 2.61ns 0.102 0 0 658 B
#7782 RunOnMethodBegin net6.0 1.07μs 5.04ns 20.2ns 0 0 0 696 B
#7782 RunOnMethodBegin netcoreapp3.1 1.43μs 5.04ns 19.5ns 0 0 0 696 B
#7782 RunOnMethodBegin net472 1.47μs 1.27ns 4.9ns 0.103 0 0 658 B

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7782) 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.18 ± (68.19 - 68.45) ms69.09 ± (69.14 - 69.40) ms+1.3%✅⬆️
.NET Framework 4.8 - Bailout
duration71.96 ± (71.83 - 72.08) ms72.98 ± (72.94 - 73.27) ms+1.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1042.85 ± (1044.00 - 1049.22) ms1050.28 ± (1052.03 - 1059.64) ms+0.7%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.04 ± (22.00 - 22.08) ms22.07 ± (22.05 - 22.10) ms+0.1%✅⬆️
process.time_to_main_ms79.05 ± (78.89 - 79.21) ms79.91 ± (79.76 - 80.06) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.93 - 10.94) MB10.90 ± (10.89 - 10.90) MB-0.4%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms21.90 ± (21.87 - 21.92) ms22.05 ± (22.02 - 22.07) ms+0.7%✅⬆️
process.time_to_main_ms80.20 ± (80.11 - 80.29) ms81.40 ± (81.26 - 81.55) ms+1.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.96 ± (10.95 - 10.96) MB10.94 ± (10.93 - 10.95) MB-0.1%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms209.64 ± (208.34 - 210.93) ms209.62 ± (208.32 - 210.92) ms-0.0%
process.time_to_main_ms513.71 ± (513.19 - 514.23) ms514.76 ± (514.17 - 515.35) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.64 ± (52.62 - 52.66) MB52.54 ± (52.51 - 52.56) MB-0.2%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms20.78 ± (20.75 - 20.81) ms20.76 ± (20.73 - 20.79) ms-0.1%
process.time_to_main_ms68.50 ± (68.38 - 68.62) ms68.77 ± (68.62 - 68.91) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.60 ± (10.60 - 10.61) MB10.58 ± (10.58 - 10.59) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.79 ± (20.76 - 20.81) ms20.83 ± (20.80 - 20.85) ms+0.2%✅⬆️
process.time_to_main_ms69.53 ± (69.45 - 69.60) ms69.97 ± (69.86 - 70.07) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.64 ± (10.63 - 10.64) MB10.63 ± (10.62 - 10.63) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms199.26 ± (196.98 - 201.55) ms196.46 ± (195.38 - 197.54) ms-1.4%
process.time_to_main_ms483.49 ± (482.91 - 484.06) ms479.70 ± (479.17 - 480.23) ms-0.8%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.60 ± (51.53 - 51.66) MB51.34 ± (51.27 - 51.41) MB-0.5%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 8 - Baseline
process.internal_duration_ms18.97 ± (18.94 - 19.00) ms19.05 ± (19.02 - 19.08) ms+0.4%✅⬆️
process.time_to_main_ms67.53 ± (67.42 - 67.64) ms68.28 ± (68.16 - 68.40) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.66 - 7.67) MB7.63 ± (7.63 - 7.64) MB-0.4%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.95 ± (18.92 - 18.98) ms19.04 ± (19.01 - 19.07) ms+0.5%✅⬆️
process.time_to_main_ms68.51 ± (68.44 - 68.58) ms69.57 ± (69.47 - 69.66) ms+1.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.70 ± (7.70 - 7.71) MB7.69 ± (7.68 - 7.70) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms177.42 ± (176.49 - 178.34) ms178.44 ± (177.56 - 179.32) ms+0.6%✅⬆️
process.time_to_main_ms458.64 ± (458.17 - 459.10) ms455.93 ± (455.50 - 456.35) ms-0.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed38.74 ± (38.71 - 38.76) MB38.63 ± (38.61 - 38.66) MB-0.3%
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.37 ± (192.36 - 193.23) ms193.74 ± (193.55 - 194.33) ms+0.7%✅⬆️
.NET Framework 4.8 - Bailout
duration195.65 ± (195.54 - 196.06) ms196.42 ± (196.26 - 196.82) ms+0.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1160.64 ± (1167.14 - 1177.47) ms1163.08 ± (1171.16 - 1182.16) ms+0.2%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms187.77 ± (187.46 - 188.08) ms188.43 ± (188.11 - 188.74) ms+0.4%✅⬆️
process.time_to_main_ms81.15 ± (80.89 - 81.40) ms81.07 ± (80.87 - 81.26) ms-0.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.09 ± (16.07 - 16.12) MB16.06 ± (16.03 - 16.08) MB-0.2%
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (19 - 20)-0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms187.16 ± (186.79 - 187.52) ms193.04 ± (192.55 - 193.54) ms+3.1%✅⬆️
process.time_to_main_ms82.20 ± (82.02 - 82.39) ms84.46 ± (84.22 - 84.71) ms+2.8%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.17 ± (16.14 - 16.20) MB16.13 ± (16.11 - 16.15) MB-0.2%
runtime.dotnet.threads.count21 ± (20 - 21)21 ± (20 - 21)+0.2%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms394.45 ± (392.01 - 396.90) ms396.28 ± (394.33 - 398.23) ms+0.5%✅⬆️
process.time_to_main_ms517.10 ± (516.48 - 517.72) ms524.91 ± (523.89 - 525.93) ms+1.5%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed63.13 ± (62.98 - 63.28) MB63.31 ± (63.19 - 63.43) MB+0.3%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms192.10 ± (191.74 - 192.46) ms191.52 ± (191.20 - 191.83) ms-0.3%
process.time_to_main_ms70.20 ± (70.01 - 70.38) ms70.12 ± (69.95 - 70.30) ms-0.1%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.16 ± (16.04 - 16.28) MB16.07 ± (15.93 - 16.22) MB-0.5%
runtime.dotnet.threads.count19 ± (19 - 19)18 ± (18 - 18)-2.9%
.NET 6 - Bailout
process.internal_duration_ms190.71 ± (190.42 - 191.00) ms192.50 ± (192.02 - 192.98) ms+0.9%✅⬆️
process.time_to_main_ms70.74 ± (70.63 - 70.85) ms71.50 ± (71.31 - 71.69) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.03 ± (15.88 - 16.18) MB16.27 ± (16.18 - 16.37) MB+1.5%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+4.6%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms409.80 ± (406.92 - 412.67) ms409.89 ± (407.25 - 412.53) ms+0.0%✅⬆️
process.time_to_main_ms487.42 ± (486.86 - 487.98) ms485.55 ± (484.76 - 486.33) ms-0.4%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.40 ± (62.27 - 62.54) MB62.16 ± (62.01 - 62.32) MB-0.4%
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms189.36 ± (189.03 - 189.69) ms191.68 ± (191.23 - 192.12) ms+1.2%✅⬆️
process.time_to_main_ms69.26 ± (69.10 - 69.43) ms69.99 ± (69.81 - 70.17) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.81 ± (11.78 - 11.83) MB11.72 ± (11.70 - 11.74) MB-0.7%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.1%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms188.42 ± (188.14 - 188.70) ms189.77 ± (189.47 - 190.06) ms+0.7%✅⬆️
process.time_to_main_ms70.29 ± (70.21 - 70.38) ms70.79 ± (70.68 - 70.91) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.89 ± (11.84 - 11.94) MB11.77 ± (11.74 - 11.80) MB-1.0%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.9%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms360.10 ± (358.56 - 361.63) ms361.44 ± (360.09 - 362.79) ms+0.4%✅⬆️
process.time_to_main_ms465.13 ± (464.41 - 465.85) ms460.70 ± (459.87 - 461.53) ms-1.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.32 ± (50.27 - 50.36) MB50.20 ± (50.16 - 50.24) MB-0.2%
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 (7782) - mean (69ms)  : 67, 71
    master - mean (68ms)  : 67, 70

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

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (1,056ms)  : 1002, 1110
    master - mean (1,047ms)  : 1010, 1083

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 (7782) - mean (108ms)  : 105, 110
    master - mean (107ms)  : 104, 109

    section Bailout
    This PR (7782) - mean (109ms)  : 107, 111
    master - mean (107ms)  : 106, 109

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (751ms)  : 725, 778
    master - mean (759ms)  : 727, 790

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

    section Bailout
    This PR (7782) - mean (96ms)  : 94, 97
    master - mean (95ms)  : 94, 96

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (706ms)  : 679, 733
    master - mean (711ms)  : 674, 748

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

    section Bailout
    This PR (7782) - mean (95ms)  : 93, 97
    master - mean (93ms)  : 92, 95

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (669ms)  : 647, 691
    master - mean (664ms)  : 649, 678

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 (7782) - mean (194ms)  : 190, 198
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7782) - mean (197ms)  : 194, 199
    master - mean (196ms)  : 193, 198

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (1,177ms)  : 1092, 1261
    master - mean (1,172ms)  : 1094, 1250

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 (7782) - mean (278ms)  : 272, 283
    master - mean (278ms)  : 272, 283

    section Bailout
    This PR (7782) - mean (286ms)  : 279, 294
    master - mean (278ms)  : 272, 284

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (963ms)  : 927, 1000
    master - mean (954ms)  : 915, 992

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7782) - mean (270ms)  : 265, 275
    master - mean (270ms)  : 265, 276

    section Bailout
    This PR (7782) - mean (272ms)  : 265, 280
    master - mean (270ms)  : 266, 273

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (932ms)  : 874, 990
    master - mean (933ms)  : 885, 980

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7782) - mean (271ms)  : 265, 278
    master - mean (268ms)  : 264, 273

    section Bailout
    This PR (7782) - mean (270ms)  : 265, 275
    master - mean (268ms)  : 265, 272

    section CallTarget+Inlining+NGEN
    This PR (7782) - mean (856ms)  : 837, 875
    master - mean (858ms)  : 839, 876

Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AI Generated Largely based on code generated by an AI or LLM. This label is the same across all dd-trace-* repos area:builds project files, build scripts, pipelines, versioning, releases, packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants