Skip to content

Add fix for persistent Process.Start version-conflict issue#7789

Merged
andrewlock merged 7 commits intomasterfrom
andrew/version-conflict-process
Nov 11, 2025
Merged

Add fix for persistent Process.Start version-conflict issue#7789
andrewlock merged 7 commits intomasterfrom
andrew/version-conflict-process

Conversation

@andrewlock
Copy link
Member

Summary of changes

  • Adds a workaround for the version-conflict issue that occurs on app startup on Linux
  • Allow doing call target modification of version conflict dll
  • Fix a bug in CallTarget instrumentation where we get the assembly reference wrong

Reason for change

As part of app startup, on some linux distros, we shell out to stat to build the container tags/entity ID. We don't want to trace this Process.Start() call, so in #5280 we added a flag to skip instrumenting these calls. However, this fix relies on a [ThreadStatic] variable, and in version-conflict scenarios (2.x.x manual, 3.x.x automatic) we end up still instrumenting this call, which causes recursion in Tracer initialization and errors.

Note that since #7453 we don't do a process start at all, but that doesn't help in this situation, because it's the 2.x.x library that's doing the Process.Start()

Implementation details

  • Use standard call target instrumentation on the 2.x.x version of Datadog.Trace (i.e. version conflict only)
  • Hook the ProcessHelpers.StartWithDoNotTrace() method, and set the 3.x.x _doNotTrace variable for the duration of the method call
  • Tweak the Rejit handler so that we do rejit/call target the Datadog.Trace 2.x.x module (but not the 3.x.x module)
  • Fix a bug in the module builder which was incorrectly injecting a reference to the 2.x.x assembly instead of the 3.x.x assembly

Test coverage

We were already working around this issue in our VersionConflict tests, so I removed the workaround, confirmed that the test failed, then made the fix, and confirmed the tests pass again.

Other details

This will only help for customers using a manual version of 2.49.0+ (when we introduced the StartWithDoNotTrace() call). I think that's good enough support.

@andrewlock andrewlock requested review from a team as code owners November 6, 2025 15:56
@andrewlock andrewlock added the area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) label Nov 6, 2025
@andrewlock andrewlock requested a review from a team as a code owner November 6, 2025 15:56
@andrewlock andrewlock added area:native-library Automatic instrumentation native C++ code (Datadog.Trace.ClrProfiler.Native) identified-by:telemetry labels Nov 6, 2025
type_ref = mdTypeRefNil;
bool is_same_assembly = false;

if (metadata_.assemblyName == integration_definition.integration_type.assembly.name)
Copy link
Member Author

Choose a reason for hiding this comment

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

Previously we were only checking for "is this the right assembly" by checking the assembly name, but we should check the version too. This is obviously an issue in the version conflict scenario, but theoretically it's an issue in other cases where two versions of the assembly are loaded (I think)

// _may_ be present depending on the underlying host system (cgroup v1/v2).
// The "do not trace" helper that normally blocks tracing these spans doesn't
// work in version conflict scenarios.
SetEnvironmentVariable("DD_TRACE_Process_ENABLED", "0");
Copy link
Member Author

Choose a reason for hiding this comment

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

Prior to the fix, removing this caused some of the the tests to fail, because we generated process spans when we shouldn't on linux (on some distros only)

Copy link
Member Author

Choose a reason for hiding this comment

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

The changes here look worse than they are - if you ignore whitespace it makes more sense. The change is just to set perform_calltarget_instrumentation_on_version_conflict_assembly when we're in version conflict, and then to not skip rewriting in that case.

@datadog-datadog-prod-us1

This comment has been minimized.

@andrewlock andrewlock force-pushed the andrew/version-conflict-process branch from 76bd4c7 to 9638914 Compare November 7, 2025 10:07
@pr-commenter
Copy link

pr-commenter bot commented Nov 7, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7789 compared to master:

  • 2 benchmarks are faster, with geometric mean 1.807
  • 1 benchmarks are slower, with geometric mean 1.150
  • 1 benchmarks have fewer allocations
  • 6 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 #7789

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.ActivityBenchmark.StartStopWithChild‑net472 6.03 KB 6.11 KB 81 B 1.34%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.7μs 58.5ns 356ns 0 0 0 5.5 KB
master StartStopWithChild netcoreapp3.1 14.1μs 62.7ns 243ns 0 0 0 5.7 KB
master StartStopWithChild net472 21.8μs 113ns 516ns 0.871 0.218 0 6.03 KB
#7789 StartStopWithChild net6.0 10.4μs 58.5ns 393ns 0 0 0 5.51 KB
#7789 StartStopWithChild netcoreapp3.1 14.7μs 55.3ns 214ns 0 0 0 5.7 KB
#7789 StartStopWithChild net472 22.4μs 123ns 790ns 0.962 0.214 0 6.11 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 942μs 1.23μs 4.77μs 0 0 0 2.71 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 403ns 1.56μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.2ms 418ns 1.62μs 0 0 0 3.35 KB
#7789 WriteAndFlushEnrichedTraces net6.0 937μs 56.2ns 195ns 0 0 0 2.72 KB
#7789 WriteAndFlushEnrichedTraces netcoreapp3.1 1.05ms 4.58μs 17.8μs 0 0 0 2.7 KB
#7789 WriteAndFlushEnrichedTraces net472 1.21ms 1.21μs 4.7μs 0 0 0 3.35 KB
Benchmarks.Trace.Asm.AppSecBodyBenchmark - Slower ⚠️ Same allocations ✔️

Slower ⚠️ in #7789

Benchmark diff/base Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody‑netcoreapp3.1 1.150 1,481.00 1,702.57

Faster 🎉 in #7789

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody‑net472 1.358 401.30 295.54

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master AllCycleSimpleBody net6.0 1.04μs 6.64ns 66.4ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.47μs 7.83ns 42.2ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.11μs 0.562ns 2.03ns 0.19 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.15μs 33.7ns 135ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9.24μs 5.31ns 20.6ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.63μs 6.1ns 23.6ns 0.725 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 324ns 0.252ns 0.974ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 399ns 2.19ns 13ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 401ns 0.0872ns 0.338ns 0.0444 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.3μs 19.7ns 76.4ns 0 0 0 3.78 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.82μs 35.9ns 144ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.7μs 1.02ns 3.82ns 0.602 0 0 3.8 KB
#7789 AllCycleSimpleBody net6.0 1.06μs 5.98ns 39.2ns 0 0 0 1.22 KB
#7789 AllCycleSimpleBody netcoreapp3.1 1.68μs 9.2ns 53.6ns 0 0 0 1.2 KB
#7789 AllCycleSimpleBody net472 1.03μs 0.457ns 1.71ns 0.191 0 0 1.23 KB
#7789 AllCycleMoreComplexBody net6.0 7.1μs 36ns 169ns 0 0 0 4.72 KB
#7789 AllCycleMoreComplexBody netcoreapp3.1 9.04μs 40.1ns 145ns 0 0 0 4.62 KB
#7789 AllCycleMoreComplexBody net472 7.62μs 5.51ns 21.3ns 0.725 0 0 4.74 KB
#7789 ObjectExtractorSimpleBody net6.0 334ns 0.982ns 3.8ns 0 0 0 280 B
#7789 ObjectExtractorSimpleBody netcoreapp3.1 409ns 0.255ns 0.988ns 0 0 0 272 B
#7789 ObjectExtractorSimpleBody net472 296ns 0.0189ns 0.0707ns 0.0433 0 0 281 B
#7789 ObjectExtractorMoreComplexBody net6.0 6.31μs 30.4ns 132ns 0 0 0 3.78 KB
#7789 ObjectExtractorMoreComplexBody netcoreapp3.1 7.93μs 36.9ns 143ns 0 0 0 3.69 KB
#7789 ObjectExtractorMoreComplexBody net472 6.71μs 1.44ns 5.2ns 0.572 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 79.7μs 401ns 1.79μs 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.8μs 321ns 1.25μs 0 0 0 32.4 KB
master EncodeArgs net472 109μs 10.1ns 37.9ns 4.92 0 0 32.5 KB
master EncodeLegacyArgs net6.0 144μs 11.1ns 42.9ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 197μs 111ns 416ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 267μs 205ns 795ns 0 0 0 2.16 KB
#7789 EncodeArgs net6.0 78.4μs 22.3ns 83.5ns 0 0 0 32.4 KB
#7789 EncodeArgs netcoreapp3.1 97.3μs 320ns 1.2μs 0 0 0 32.4 KB
#7789 EncodeArgs net472 111μs 33.9ns 131ns 5 0 0 32.5 KB
#7789 EncodeLegacyArgs net6.0 141μs 22.6ns 84.6ns 0 0 0 2.15 KB
#7789 EncodeLegacyArgs netcoreapp3.1 199μs 180ns 696ns 0 0 0 2.14 KB
#7789 EncodeLegacyArgs net472 262μs 117ns 454ns 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7789

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack‑netcoreapp3.1 2.406 720,188.19 299,364.94

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 396μs 75.8ns 273ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 408μs 73.1ns 253ns 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 428μs 37.8ns 142ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 289μs 25ns 96.8ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 715μs 3.46μs 14.7μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 311μs 57.7ns 224ns 0 0 0 2.29 KB
#7789 RunWafRealisticBenchmark net6.0 401μs 90.1ns 349ns 0 0 0 4.55 KB
#7789 RunWafRealisticBenchmark netcoreapp3.1 412μs 169ns 585ns 0 0 0 4.48 KB
#7789 RunWafRealisticBenchmark net472 432μs 53.1ns 199ns 0 0 0 4.66 KB
#7789 RunWafRealisticBenchmarkWithAttack net6.0 287μs 25.6ns 95.6ns 0 0 0 2.24 KB
#7789 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 299μs 86.7ns 336ns 0 0 0 2.22 KB
#7789 RunWafRealisticBenchmarkWithAttack net472 313μs 50.9ns 197ns 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μs 222ns 860ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.7μs 84.8ns 317ns 0 0 0 17.42 KB
master SendRequest net472 0.000715ns 0.000715ns 0.00277ns 0 0 0 0 b
#7789 SendRequest net6.0 61.2μs 121ns 437ns 0 0 0 14.52 KB
#7789 SendRequest netcoreapp3.1 71.9μs 52.8ns 191ns 0 0 0 17.42 KB
#7789 SendRequest net472 0.00438ns 0.00141ns 0.00509ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7789

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net6.0 2 B 4 B 2 B 100.00%

Fewer allocations 🎉 in #7789

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 5 B 3 B -2 B -40.00%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.95ms 3.02μs 11.3μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.08ms 4.55μs 16.4μs 0 0 0 640 KB
master OriginalCharSlice net472 2.68ms 115ns 431ns 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.34ms 199ns 770ns 0 0 0 2 B
master OptimizedCharSlice netcoreapp3.1 1.65ms 643ns 2.49μs 0 0 0 1 B
master OptimizedCharSlice net472 1.9ms 257ns 993ns 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 840μs 56.7ns 220ns 0 0 0 5 B
master OptimizedCharSliceWithPool netcoreapp3.1 797μs 80.8ns 313ns 0 0 0 0 b
master OptimizedCharSliceWithPool net472 1.14ms 110ns 424ns 0 0 0 0 b
#7789 OriginalCharSlice net6.0 1.93ms 4.02μs 15.6μs 0 0 0 640.01 KB
#7789 OriginalCharSlice netcoreapp3.1 2.06ms 2.59μs 8.99μs 0 0 0 640 KB
#7789 OriginalCharSlice net472 2.75ms 1.67μs 6.48μs 100 0 0 641.95 KB
#7789 OptimizedCharSlice net6.0 1.43ms 119ns 461ns 0 0 0 4 B
#7789 OptimizedCharSlice netcoreapp3.1 1.7ms 1.85μs 7.18μs 0 0 0 1 B
#7789 OptimizedCharSlice net472 1.99ms 318ns 1.23μs 0 0 0 0 b
#7789 OptimizedCharSliceWithPool net6.0 865μs 57.5ns 215ns 0 0 0 3 B
#7789 OptimizedCharSliceWithPool netcoreapp3.1 824μs 102ns 394ns 0 0 0 0 b
#7789 OptimizedCharSliceWithPool net472 1.15ms 123ns 476ns 0 0 0 0 b
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7789

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.79 KB 42.42 KB 637 B 1.52%
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 41.75 KB 42.03 KB 273 B 0.65%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 711μs 1.21μs 4.54μs 0 0 0 41.79 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 743μs 1.69μs 11.8μs 0 0 0 41.75 KB
master WriteAndFlushEnrichedTraces net472 896μs 4.45μs 18.4μs 8.33 0 0 56.25 KB
#7789 WriteAndFlushEnrichedTraces net6.0 750μs 4.39μs 41μs 0 0 0 42.42 KB
#7789 WriteAndFlushEnrichedTraces netcoreapp3.1 698μs 5.38μs 53.8μs 0 0 0 42.03 KB
#7789 WriteAndFlushEnrichedTraces net472 866μs 2.55μs 9.54μs 8.33 0 0 56.53 KB
Benchmarks.Trace.DbCommandBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteNonQuery net6.0 1.9μs 3.8ns 14.7ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.52μs 8.95ns 33.5ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.86μs 2.8ns 10.8ns 0.156 0.0142 0 987 B
#7789 ExecuteNonQuery net6.0 1.95μs 1.72ns 6.64ns 0 0 0 1.02 KB
#7789 ExecuteNonQuery netcoreapp3.1 2.61μs 7.96ns 30.8ns 0 0 0 1.02 KB
#7789 ExecuteNonQuery net472 2.8μs 4.36ns 16.3ns 0.151 0.0138 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.78μs 8.36ns 32.4ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.18μs 11.1ns 49.6ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.65μs 2.07ns 8ns 0.164 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.89μs 2.29ns 8.88ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.38μs 9.01ns 34.9ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.73μs 3.39ns 12.2ns 0.168 0 0 1.1 KB
#7789 CallElasticsearch net6.0 1.75μs 9.14ns 44.8ns 0 0 0 1.03 KB
#7789 CallElasticsearch netcoreapp3.1 2.24μs 9.62ns 37.3ns 0 0 0 1.03 KB
#7789 CallElasticsearch net472 3.52μs 7.77ns 30.1ns 0.157 0 0 1.04 KB
#7789 CallElasticsearchAsync net6.0 1.86μs 0.549ns 2.05ns 0 0 0 1.01 KB
#7789 CallElasticsearchAsync netcoreapp3.1 2.47μs 12.7ns 58.3ns 0 0 0 1.08 KB
#7789 CallElasticsearchAsync net472 3.6μs 6.08ns 23.5ns 0.162 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 6.28ns 24.3ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.41μs 1.03ns 3.84ns 0 0 0 952 B
master ExecuteAsync net472 2.59μs 2.65ns 10.3ns 0.144 0 0 915 B
#7789 ExecuteAsync net6.0 1.88μs 3.8ns 14.7ns 0 0 0 952 B
#7789 ExecuteAsync netcoreapp3.1 2.37μs 7.08ns 27.4ns 0 0 0 952 B
#7789 ExecuteAsync net472 2.58μs 3.16ns 12.2ns 0.142 0 0 915 B
Benchmarks.Trace.HttpClientBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendAsync net6.0 6.86μs 13.5ns 52.3ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 8.86μs 26.5ns 103ns 0 0 0 2.9 KB
master SendAsync net472 12.4μs 10.8ns 41.9ns 0.492 0 0 3.18 KB
#7789 SendAsync net6.0 7.15μs 7.35ns 26.5ns 0 0 0 2.36 KB
#7789 SendAsync netcoreapp3.1 8.77μs 17.8ns 69ns 0 0 0 2.9 KB
#7789 SendAsync net472 12μs 11.8ns 45.6ns 0.484 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7789

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 257.64 KB 277.78 KB 20.14 KB 7.82%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net472 278.53 KB 280.12 KB 1.59 KB 0.57%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 42.4μs 218ns 1.11μs 0 0 0 43.78 KB
master StringConcatBenchmark netcoreapp3.1 48.6μs 215ns 805ns 0 0 0 42.7 KB
master StringConcatBenchmark net472 57.2μs 178ns 617ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 521μs 2.07μs 11.3μs 0 0 0 259.32 KB
master StringConcatAspectBenchmark netcoreapp3.1 526μs 2.18μs 8.16μs 0 0 0 257.64 KB
master StringConcatAspectBenchmark net472 428μs 2.44μs 17.6μs 0 0 0 278.53 KB
#7789 StringConcatBenchmark net6.0 47.7μs 279ns 2.49μs 0 0 0 43.83 KB
#7789 StringConcatBenchmark netcoreapp3.1 50.3μs 289ns 2.05μs 0 0 0 42.71 KB
#7789 StringConcatBenchmark net472 57.8μs 168ns 606ns 0 0 0 65.54 KB
#7789 StringConcatAspectBenchmark net6.0 470μs 1.99μs 7.19μs 0 0 0 258.96 KB
#7789 StringConcatAspectBenchmark netcoreapp3.1 548μs 2.59μs 10μs 0 0 0 277.78 KB
#7789 StringConcatAspectBenchmark net472 406μs 2.35μs 19μs 0 0 0 280.12 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.64μs 13.4ns 60ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.74μs 17.7ns 70.8ns 0 0 0 1.7 KB
master EnrichedLog net472 3.98μs 6.49ns 25.1ns 0.258 0 0 1.64 KB
#7789 EnrichedLog net6.0 2.68μs 13.6ns 62.2ns 0 0 0 1.7 KB
#7789 EnrichedLog netcoreapp3.1 3.71μs 16.5ns 64.1ns 0 0 0 1.7 KB
#7789 EnrichedLog net472 4.03μs 4.24ns 16.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 94.7ns 341ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 128μs 288ns 1.12μs 0 0 0 4.31 KB
master EnrichedLog net472 170μs 393ns 1.52μs 0 0 0 4.52 KB
#7789 EnrichedLog net6.0 124μs 125ns 483ns 0 0 0 4.31 KB
#7789 EnrichedLog netcoreapp3.1 130μs 188ns 679ns 0 0 0 4.31 KB
#7789 EnrichedLog net472 169μs 56.4ns 218ns 0 0 0 4.52 KB
Benchmarks.Trace.NLogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.95μs 22.8ns 91.1ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.82μs 17.1ns 66.3ns 0 0 0 2.26 KB
master EnrichedLog net472 7.5μs 7.99ns 31ns 0.298 0 0 2.08 KB
#7789 EnrichedLog net6.0 4.95μs 9.84ns 38.1ns 0 0 0 2.26 KB
#7789 EnrichedLog netcoreapp3.1 6.88μs 20.5ns 79.4ns 0 0 0 2.26 KB
#7789 EnrichedLog net472 7.43μs 3.16ns 12.2ns 0.297 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 1.97μs 10.1ns 37.9ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.64μs 10.3ns 38.5ns 0 0 0 1.2 KB
master SendReceive net472 3.07μs 4.16ns 16.1ns 0.185 0 0 1.2 KB
#7789 SendReceive net6.0 2.05μs 9.86ns 38.2ns 0 0 0 1.2 KB
#7789 SendReceive netcoreapp3.1 2.57μs 12.2ns 47.2ns 0 0 0 1.2 KB
#7789 SendReceive net472 3.06μs 4.84ns 18.7ns 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.3μs 18.4ns 71.3ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.75μs 11.4ns 44ns 0 0 0 1.63 KB
master EnrichedLog net472 6.48μs 7.08ns 27.4ns 0.29 0 0 2.03 KB
#7789 EnrichedLog net6.0 4.42μs 4.37ns 15.2ns 0 0 0 1.58 KB
#7789 EnrichedLog netcoreapp3.1 5.73μs 9.98ns 38.7ns 0 0 0 1.63 KB
#7789 EnrichedLog net472 6.65μs 8.83ns 34.2ns 0.299 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 773ns 3.48ns 13.5ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 975ns 0.554ns 2.14ns 0 0 0 576 B
master StartFinishSpan net472 933ns 0.712ns 2.76ns 0.0891 0 0 578 B
master StartFinishScope net6.0 948ns 0.345ns 1.34ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.2μs 6.03ns 28.3ns 0 0 0 696 B
master StartFinishScope net472 1.12μs 0.673ns 2.61ns 0.1 0 0 658 B
#7789 StartFinishSpan net6.0 802ns 0.369ns 1.43ns 0 0 0 576 B
#7789 StartFinishSpan netcoreapp3.1 964ns 4.97ns 23.8ns 0 0 0 576 B
#7789 StartFinishSpan net472 919ns 0.839ns 3.25ns 0.0874 0 0 578 B
#7789 StartFinishScope net6.0 965ns 1.12ns 4.33ns 0 0 0 696 B
#7789 StartFinishScope netcoreapp3.1 1.21μs 4.8ns 18ns 0 0 0 696 B
#7789 StartFinishScope net472 1.12μs 0.692ns 2.68ns 0.1 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.07μs 4.91ns 19.7ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.4μs 7.16ns 34.3ns 0 0 0 696 B
master RunOnMethodBegin net472 1.44μs 1.61ns 6.22ns 0.102 0 0 658 B
#7789 RunOnMethodBegin net6.0 1.09μs 5.38ns 21.5ns 0 0 0 696 B
#7789 RunOnMethodBegin netcoreapp3.1 1.43μs 6.53ns 26.1ns 0 0 0 696 B
#7789 RunOnMethodBegin net472 1.46μs 1.27ns 4.91ns 0.102 0 0 658 B

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

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7789) and master.

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration75.33 ± (75.25 - 75.92) ms73.81 ± (73.83 - 74.55) ms-2.0%
.NET Framework 4.8 - Bailout
duration79.89 ± (80.03 - 80.77) ms78.41 ± (78.45 - 79.16) ms-1.9%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1105.35 ± (1105.97 - 1115.76) ms1090.64 ± (1095.79 - 1107.30) ms-1.3%
.NET Core 3.1 - Baseline
process.internal_duration_ms23.17 ± (23.08 - 23.25) ms22.87 ± (22.80 - 22.93) ms-1.3%
process.time_to_main_ms88.66 ± (88.30 - 89.02) ms86.87 ± (86.51 - 87.22) ms-2.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.91 ± (10.90 - 10.91) MB10.86 ± (10.86 - 10.87) MB-0.4%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.83 ± (22.76 - 22.90) ms22.68 ± (22.62 - 22.74) ms-0.7%
process.time_to_main_ms88.66 ± (88.33 - 88.99) ms88.15 ± (87.78 - 88.51) ms-0.6%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.93 - 10.94) MB10.91 ± (10.91 - 10.91) MB-0.3%
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms223.10 ± (221.56 - 224.64) ms217.48 ± (216.19 - 218.77) ms-2.5%
process.time_to_main_ms550.86 ± (549.66 - 552.05) ms543.93 ± (542.76 - 545.11) ms-1.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed52.63 ± (52.61 - 52.65) MB52.48 ± (52.46 - 52.50) MB-0.3%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.6%
.NET 6 - Baseline
process.internal_duration_ms21.69 ± (21.63 - 21.74) ms21.53 ± (21.47 - 21.58) ms-0.7%
process.time_to_main_ms75.54 ± (75.28 - 75.80) ms74.79 ± (74.46 - 75.11) ms-1.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.57 ± (10.57 - 10.58) MB10.62 ± (10.61 - 10.62) MB+0.4%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.44 ± (21.40 - 21.49) ms21.56 ± (21.50 - 21.61) ms+0.5%✅⬆️
process.time_to_main_ms76.19 ± (75.88 - 76.50) ms76.89 ± (76.58 - 77.19) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.63 ± (10.63 - 10.63) MB10.65 ± (10.65 - 10.65) MB+0.2%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms207.23 ± (205.54 - 208.91) ms205.57 ± (204.16 - 206.98) ms-0.8%
process.time_to_main_ms513.00 ± (511.96 - 514.04) ms505.24 ± (504.09 - 506.40) ms-1.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed51.78 ± (51.75 - 51.81) MB51.59 ± (51.55 - 51.62) MB-0.4%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms19.76 ± (19.70 - 19.81) ms19.73 ± (19.66 - 19.79) ms-0.1%
process.time_to_main_ms73.82 ± (73.58 - 74.06) ms74.16 ± (73.82 - 74.49) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.64 ± (7.63 - 7.64) MB7.62 ± (7.61 - 7.62) MB-0.3%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms19.91 ± (19.86 - 19.97) ms19.58 ± (19.52 - 19.64) ms-1.7%
process.time_to_main_ms76.84 ± (76.51 - 77.17) ms76.04 ± (75.70 - 76.38) ms-1.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.68 ± (7.68 - 7.69) MB7.68 ± (7.67 - 7.69) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms189.93 ± (188.91 - 190.95) ms188.76 ± (187.91 - 189.61) ms-0.6%
process.time_to_main_ms491.64 ± (490.67 - 492.61) ms481.12 ± (480.19 - 482.04) ms-2.1%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed39.03 ± (38.99 - 39.07) MB38.77 ± (38.73 - 38.81) MB-0.7%
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)-0.1%

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration190.62 ± (190.51 - 191.24) ms191.62 ± (191.63 - 192.44) ms+0.5%✅⬆️
.NET Framework 4.8 - Bailout
duration194.61 ± (194.40 - 194.83) ms194.82 ± (194.64 - 195.11) ms+0.1%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1155.54 ± (1159.77 - 1168.60) ms1155.68 ± (1157.95 - 1166.25) ms+0.0%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms186.23 ± (185.89 - 186.57) ms185.87 ± (185.58 - 186.15) ms-0.2%
process.time_to_main_ms80.39 ± (80.18 - 80.60) ms80.27 ± (80.06 - 80.47) ms-0.2%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.06 ± (16.03 - 16.09) MB16.17 ± (16.14 - 16.21) MB+0.7%✅⬆️
runtime.dotnet.threads.count20 ± (19 - 20)20 ± (19 - 20)-0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms185.89 ± (185.50 - 186.29) ms186.15 ± (185.86 - 186.45) ms+0.1%✅⬆️
process.time_to_main_ms81.42 ± (81.25 - 81.60) ms81.36 ± (81.18 - 81.54) ms-0.1%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.05 - 16.17) MB16.22 ± (16.19 - 16.26) MB+0.7%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 21)21 ± (21 - 21)+0.9%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms399.24 ± (396.44 - 402.04) ms389.85 ± (387.66 - 392.04) ms-2.4%
process.time_to_main_ms516.88 ± (516.25 - 517.51) ms513.04 ± (512.46 - 513.63) ms-0.7%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed63.16 ± (63.01 - 63.31) MB62.46 ± (62.29 - 62.62) MB-1.1%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.0%
.NET 6 - Baseline
process.internal_duration_ms189.97 ± (189.67 - 190.27) ms190.41 ± (190.09 - 190.73) ms+0.2%✅⬆️
process.time_to_main_ms69.05 ± (68.94 - 69.16) ms69.37 ± (69.24 - 69.50) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.78 ± (15.61 - 15.94) MB15.96 ± (15.80 - 16.12) MB+1.2%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.2%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms189.38 ± (189.10 - 189.66) ms188.90 ± (188.66 - 189.14) ms-0.3%
process.time_to_main_ms70.11 ± (70.02 - 70.21) ms70.32 ± (70.23 - 70.41) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.61 ± (15.45 - 15.78) MB15.54 ± (15.37 - 15.71) MB-0.5%
runtime.dotnet.threads.count19 ± (18 - 19)18 ± (18 - 19)-0.5%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms409.29 ± (406.27 - 412.31) ms406.74 ± (404.10 - 409.39) ms-0.6%
process.time_to_main_ms483.98 ± (483.43 - 484.53) ms480.19 ± (479.59 - 480.78) ms-0.8%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed62.13 ± (61.98 - 62.27) MB62.27 ± (62.13 - 62.41) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 30)-0.0%
.NET 8 - Baseline
process.internal_duration_ms187.85 ± (187.59 - 188.11) ms189.38 ± (189.03 - 189.72) ms+0.8%✅⬆️
process.time_to_main_ms68.92 ± (68.76 - 69.08) ms69.26 ± (69.07 - 69.44) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.79 ± (11.74 - 11.83) MB11.77 ± (11.74 - 11.80) MB-0.2%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.0%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms186.94 ± (186.73 - 187.16) ms188.34 ± (188.04 - 188.63) ms+0.7%✅⬆️
process.time_to_main_ms69.67 ± (69.56 - 69.78) ms70.10 ± (70.01 - 70.20) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.77 ± (11.69 - 11.85) MB11.84 ± (11.81 - 11.87) MB+0.6%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.8%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms355.70 ± (354.08 - 357.32) ms359.79 ± (358.33 - 361.25) ms+1.1%✅⬆️
process.time_to_main_ms463.81 ± (463.23 - 464.40) ms455.10 ± (454.55 - 455.66) ms-1.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.50 ± (50.46 - 50.54) MB50.27 ± (50.23 - 50.31) MB-0.5%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.1%✅⬆️
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 (7789) - mean (74ms)  : 69, 80
    master - mean (76ms)  : 70, 81

    section Bailout
    This PR (7789) - mean (79ms)  : 73, 84
    master - mean (80ms)  : 75, 86

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (1,102ms)  : 1015, 1188
    master - mean (1,111ms)  : 1041, 1181

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 (7789) - mean (117ms)  : 110, 124
    master - mean (120ms)  : 112, 128

    section Bailout
    This PR (7789) - mean (118ms)  : 111, 126
    master - mean (119ms)  : 112, 126

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (798ms)  : 759, 836
    master - mean (815ms)  : 766, 864

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7789) - mean (103ms)  : 96, 110
    master - mean (104ms)  : 99, 109

    section Bailout
    This PR (7789) - mean (106ms)  : 99, 112
    master - mean (105ms)  : 99, 110

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (743ms)  : 706, 779
    master - mean (752ms)  : 713, 791

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7789) - mean (102ms)  : 97, 108
    master - mean (102ms)  : 97, 106

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

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (701ms)  : 674, 728
    master - mean (716ms)  : 686, 746

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 (7789) - mean (192ms)  : 188, 196
    master - mean (191ms)  : 187, 194

    section Bailout
    This PR (7789) - mean (195ms)  : 193, 197
    master - mean (195ms)  : 193, 197

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (1,162ms)  : 1103, 1222
    master - mean (1,164ms)  : 1100, 1228

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 (7789) - mean (274ms)  : 270, 278
    master - mean (275ms)  : 269, 281

    section Bailout
    This PR (7789) - mean (276ms)  : 270, 281
    master - mean (276ms)  : 271, 280

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (940ms)  : 912, 969
    master - mean (955ms)  : 908, 1001

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7789) - mean (268ms)  : 263, 272
    master - mean (267ms)  : 263, 271

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

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (920ms)  : 874, 965
    master - mean (925ms)  : 880, 970

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7789) - mean (268ms)  : 264, 272
    master - mean (266ms)  : 262, 270

    section Bailout
    This PR (7789) - mean (267ms)  : 264, 271
    master - mean (266ms)  : 263, 270

    section CallTarget+Inlining+NGEN
    This PR (7789) - mean (845ms)  : 823, 867
    master - mean (850ms)  : 832, 869

Loading

@andrewlock andrewlock force-pushed the andrew/version-conflict-process branch from 9638914 to b5a39c5 Compare November 7, 2025 12:24
@lucaspimentel lucaspimentel requested a review from a team November 7, 2025 20:26
Co-authored-by: Lucas Pimentel <lucas.pimentel@datadoghq.com>
Copy link
Member

@tonyredondo tonyredondo left a comment

Choose a reason for hiding this comment

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

Nice catch! thanks!

@andrewlock andrewlock merged commit d5ffab2 into master Nov 11, 2025
152 checks passed
@andrewlock andrewlock deleted the andrew/version-conflict-process branch November 11, 2025 10:53
@github-actions github-actions bot added this to the vNext-v3 milestone Nov 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:native-library Automatic instrumentation native C++ code (Datadog.Trace.ClrProfiler.Native) area:tracer The core tracer library (Datadog.Trace, does not include OpenTracing, native code, or integrations) identified-by:telemetry

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants