Skip to content

Conversation

@tonyredondo
Copy link
Member

Summary of changes

  • Added Exception Replay–specific agentless configuration keys and settings so snapshots can bypass the local agent when explicitly enabled.
  • Introduced an agentless transport helper (with request header injection) and taught SnapshotUploadApi/ExceptionReplay to use static debugger intakes when the agent is absent.
  • Prevented symbol uploader initialization while in agentless ER mode.
  • Expanded unit coverage for the new configuration/transport behavior, including header verification and custom intake overrides.

Reason for change

For complete Test Optimization + Exception Replay integration in environments without the Datadog Agent need a documented path to send snapshots directly to Datadog without impacting Shared Debugger/DI behaviors. The plan isolates ER agentless support, reusing DD_API_KEY/DD_SITE, and ensures we do not silently initialize features (symbol uploads) that still require the agent/RCM.

Implementation details

  • ConfigurationKeys.Debugger + ExceptionReplaySettings now surface DD_EXCEPTION_REPLAY_AGENTLESS_ENABLED/DD_EXCEPTION_REPLAY_AGENTLESS_URL, defaulting to datadoghq.com and the existing DD_API_KEY.
  • ExceptionReplayTransportFactory creates either the existing agent transport or an HTTPS transport that injects DD-API-KEY, DD-EVP-ORIGIN=dd-trace-dotnet, and a per-request DD-REQUEST-ID, honouring site overrides.
  • SnapshotUploadApi accepts a static endpoint so ER can bypass discovery when agentless, and ExceptionReplay wires the new transport info through DebuggerUploadApiFactory.
  • DebuggerManager now emits a clear log and skips symbol uploader initialization whenever ER is agentless, avoiding futile RCM attempts.

Test coverage

  • New test suite has been added.
  • Snapshot uploader tests (SnapshotUploadApiTests) continue to validate static endpoint behavior.
  • New transport tests verify header injection + override URL parsing without exposing additional public APIs.

Other details

  • Agentless mode still logs that symbol uploads are unavailable; long-term support would require backend work to accept symbol payloads without RCM.

@datadog-datadog-prod-us1

This comment has been minimized.

@tonyredondo tonyredondo marked this pull request as ready for review November 24, 2025 17:35
@tonyredondo tonyredondo requested review from a team as code owners November 24, 2025 17:35
@pr-commenter
Copy link

pr-commenter bot commented Nov 24, 2025

Benchmarks

Benchmarks Report for benchmark platform 🐌

Benchmarks for #7859 compared to master:

  • 1 benchmarks are faster, with geometric mean 2.054
  • 5 benchmarks have fewer allocations
  • 8 benchmarks have more allocations

The following thresholds were used for comparing the benchmark speeds:

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

Allocation changes below 0.5% are ignored.

Benchmark details

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

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StartStopWithChild net6.0 10.7μs 53.2ns 219ns 0 0 0 5.51 KB
master StartStopWithChild netcoreapp3.1 13.9μs 59.4ns 230ns 0 0 0 5.7 KB
master StartStopWithChild net472 22.5μs 119ns 653ns 0.963 0.214 0 6.1 KB
#7859 StartStopWithChild net6.0 10.6μs 58.6ns 380ns 0 0 0 5.51 KB
#7859 StartStopWithChild netcoreapp3.1 13.8μs 70.4ns 315ns 0 0 0 5.7 KB
#7859 StartStopWithChild net472 22.3μs 127ns 880ns 1.02 0.342 0.114 6.08 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 934μs 170ns 659ns 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 1.04ms 280ns 1.09μs 0 0 0 2.7 KB
master WriteAndFlushEnrichedTraces net472 1.19ms 240ns 928ns 0 0 0 3.31 KB
#7859 WriteAndFlushEnrichedTraces net6.0 931μs 87.8ns 317ns 0 0 0 2.7 KB
#7859 WriteAndFlushEnrichedTraces netcoreapp3.1 1.03ms 113ns 421ns 0 0 0 2.7 KB
#7859 WriteAndFlushEnrichedTraces net472 1.21ms 81.2ns 304ns 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.06μs 6ns 34ns 0 0 0 1.22 KB
master AllCycleSimpleBody netcoreapp3.1 1.44μs 0.837ns 3.24ns 0 0 0 1.2 KB
master AllCycleSimpleBody net472 1.02μs 0.193ns 0.722ns 0.193 0 0 1.23 KB
master AllCycleMoreComplexBody net6.0 7.21μs 35.8ns 160ns 0 0 0 4.72 KB
master AllCycleMoreComplexBody netcoreapp3.1 9μs 36.7ns 137ns 0 0 0 4.62 KB
master AllCycleMoreComplexBody net472 7.69μs 5.41ns 20.9ns 0.731 0 0 4.74 KB
master ObjectExtractorSimpleBody net6.0 319ns 1.72ns 9.7ns 0 0 0 280 B
master ObjectExtractorSimpleBody netcoreapp3.1 385ns 2.18ns 14.1ns 0 0 0 272 B
master ObjectExtractorSimpleBody net472 297ns 0.0397ns 0.148ns 0.0439 0 0 281 B
master ObjectExtractorMoreComplexBody net6.0 6.28μs 31.9ns 153ns 0 0 0 3.79 KB
master ObjectExtractorMoreComplexBody netcoreapp3.1 7.83μs 2.59ns 9.67ns 0 0 0 3.69 KB
master ObjectExtractorMoreComplexBody net472 6.69μs 4.12ns 16ns 0.601 0 0 3.8 KB
#7859 AllCycleSimpleBody net6.0 1.06μs 4.31ns 16.7ns 0 0 0 1.22 KB
#7859 AllCycleSimpleBody netcoreapp3.1 1.45μs 7.7ns 38.5ns 0 0 0 1.2 KB
#7859 AllCycleSimpleBody net472 1.07μs 0.681ns 2.64ns 0.19 0 0 1.23 KB
#7859 AllCycleMoreComplexBody net6.0 7.02μs 37.3ns 190ns 0 0 0 4.72 KB
#7859 AllCycleMoreComplexBody netcoreapp3.1 8.99μs 35.6ns 133ns 0 0 0 4.62 KB
#7859 AllCycleMoreComplexBody net472 7.64μs 3.32ns 12.4ns 0.726 0 0 4.74 KB
#7859 ObjectExtractorSimpleBody net6.0 323ns 0.179ns 0.694ns 0 0 0 280 B
#7859 ObjectExtractorSimpleBody netcoreapp3.1 406ns 0.884ns 3.42ns 0 0 0 272 B
#7859 ObjectExtractorSimpleBody net472 299ns 0.0148ns 0.0511ns 0.0442 0 0 281 B
#7859 ObjectExtractorMoreComplexBody net6.0 6.27μs 32.4ns 159ns 0 0 0 3.78 KB
#7859 ObjectExtractorMoreComplexBody netcoreapp3.1 7.81μs 27.7ns 107ns 0 0 0 3.69 KB
#7859 ObjectExtractorMoreComplexBody net472 6.66μs 8.74ns 33.8ns 0.598 0 0 3.8 KB
Benchmarks.Trace.Asm.AppSecEncoderBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EncodeArgs net6.0 76.8μs 186ns 695ns 0 0 0 32.4 KB
master EncodeArgs netcoreapp3.1 96.8μs 296ns 1.15μs 0 0 0 32.4 KB
master EncodeArgs net472 109μs 7.23ns 27.1ns 4.91 0 0 32.51 KB
master EncodeLegacyArgs net6.0 148μs 56.9ns 213ns 0 0 0 2.15 KB
master EncodeLegacyArgs netcoreapp3.1 199μs 141ns 527ns 0 0 0 2.14 KB
master EncodeLegacyArgs net472 264μs 19.6ns 70.7ns 0 0 0 2.16 KB
#7859 EncodeArgs net6.0 77.3μs 35.7ns 134ns 0 0 0 32.4 KB
#7859 EncodeArgs netcoreapp3.1 96.7μs 242ns 906ns 0 0 0 32.4 KB
#7859 EncodeArgs net472 109μs 15.7ns 60.8ns 4.89 0 0 32.51 KB
#7859 EncodeLegacyArgs net6.0 148μs 26.4ns 102ns 0 0 0 2.15 KB
#7859 EncodeLegacyArgs netcoreapp3.1 199μs 57.8ns 208ns 0 0 0 2.14 KB
#7859 EncodeLegacyArgs net472 263μs 384ns 1.49μs 0 0 0 2.16 KB
Benchmarks.Trace.Asm.AppSecWafBenchmark - Faster 🎉 Same allocations ✔️

Faster 🎉 in #7859

Benchmark base/diff Base Median (ns) Diff Median (ns) Modality
Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmark‑netcoreapp3.1 2.054 853,429.64 415,460.94

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master RunWafRealisticBenchmark net6.0 396μs 119ns 460ns 0 0 0 4.55 KB
master RunWafRealisticBenchmark netcoreapp3.1 809μs 13.4μs 134μs 0 0 0 4.48 KB
master RunWafRealisticBenchmark net472 430μs 84.7ns 328ns 0 0 0 4.66 KB
master RunWafRealisticBenchmarkWithAttack net6.0 289μs 22.3ns 83.3ns 0 0 0 2.24 KB
master RunWafRealisticBenchmarkWithAttack netcoreapp3.1 671μs 13.5μs 134μs 0 0 0 2.22 KB
master RunWafRealisticBenchmarkWithAttack net472 310μs 37.6ns 146ns 0 0 0 2.29 KB
#7859 RunWafRealisticBenchmark net6.0 396μs 84.8ns 294ns 0 0 0 4.55 KB
#7859 RunWafRealisticBenchmark netcoreapp3.1 415μs 910ns 3.41μs 0 0 0 4.48 KB
#7859 RunWafRealisticBenchmark net472 434μs 92.6ns 346ns 0 0 0 4.66 KB
#7859 RunWafRealisticBenchmarkWithAttack net6.0 289μs 72.2ns 280ns 0 0 0 2.24 KB
#7859 RunWafRealisticBenchmarkWithAttack netcoreapp3.1 725μs 5.94μs 59.4μs 0 0 0 2.22 KB
#7859 RunWafRealisticBenchmarkWithAttack net472 311μs 42.2ns 163ns 0 0 0 2.29 KB
Benchmarks.Trace.AspNetCoreBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendRequest net6.0 61.3μs 41.5ns 161ns 0 0 0 14.52 KB
master SendRequest netcoreapp3.1 71.6μs 63.2ns 245ns 0 0 0 17.42 KB
master SendRequest net472 0.00307ns 0.00157ns 0.00609ns 0 0 0 0 b
#7859 SendRequest net6.0 61.2μs 106ns 383ns 0 0 0 14.52 KB
#7859 SendRequest netcoreapp3.1 73.2μs 314ns 1.4μs 0 0 0 17.42 KB
#7859 SendRequest net472 0.00282ns 0.00122ns 0.00472ns 0 0 0 0 b
Benchmarks.Trace.CharSliceBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice‑net472 0 b 85 B 85 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net472 0 b 47 B 47 B
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑netcoreapp3.1 1 B 19 B 18 B 1,800.00%
Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool‑net6.0 2 B 6 B 4 B 200.00%

Fewer allocations 🎉 in #7859

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

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master OriginalCharSlice net6.0 1.91ms 532ns 1.99μs 0 0 0 640.01 KB
master OriginalCharSlice netcoreapp3.1 2.14ms 7.49μs 29μs 0 0 0 640 KB
master OriginalCharSlice net472 2.62ms 881ns 3.41μs 100 0 0 641.95 KB
master OptimizedCharSlice net6.0 1.35ms 2.73μs 10.6μs 0 0 0 7 B
master OptimizedCharSlice netcoreapp3.1 1.69ms 297ns 1.15μs 0 0 0 1 B
master OptimizedCharSlice net472 1.94ms 170ns 638ns 0 0 0 0 b
master OptimizedCharSliceWithPool net6.0 816μs 26.3ns 102ns 0 0 0 2 B
master OptimizedCharSliceWithPool netcoreapp3.1 873μs 52.2ns 195ns 0 0 0 1 B
master OptimizedCharSliceWithPool net472 1.14ms 113ns 439ns 0 0 0 0 b
#7859 OriginalCharSlice net6.0 1.91ms 284ns 1.1μs 0 0 0 640.01 KB
#7859 OriginalCharSlice netcoreapp3.1 2.12ms 2.41μs 9.35μs 0 0 0 640 KB
#7859 OriginalCharSlice net472 2.77ms 1.81μs 7μs 100 0 0 641.95 KB
#7859 OptimizedCharSlice net6.0 1.45ms 378ns 1.46μs 0 0 0 4 B
#7859 OptimizedCharSlice netcoreapp3.1 1.68ms 498ns 1.93μs 0 0 0 1 B
#7859 OptimizedCharSlice net472 2.08ms 9.25μs 35.8μs 0 0 0 85 B
#7859 OptimizedCharSliceWithPool net6.0 836μs 68.1ns 264ns 0 0 0 6 B
#7859 OptimizedCharSliceWithPool netcoreapp3.1 812μs 273ns 1.06μs 0 0 0 19 B
#7859 OptimizedCharSliceWithPool net472 1.15ms 143ns 554ns 0 0 0 47 B
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net472 55.94 KB 57.13 KB 1.19 KB 2.13%
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑net6.0 41.78 KB 42.6 KB 817 B 1.96%

Fewer allocations 🎉 in #7859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces‑netcoreapp3.1 42.75 KB 41.85 KB -897 B -2.10%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master WriteAndFlushEnrichedTraces net6.0 719μs 937ns 3.51μs 0 0 0 41.78 KB
master WriteAndFlushEnrichedTraces netcoreapp3.1 748μs 2.2μs 8.54μs 0 0 0 42.75 KB
master WriteAndFlushEnrichedTraces net472 1.03ms 5.08μs 21.6μs 5.21 0 0 55.94 KB
#7859 WriteAndFlushEnrichedTraces net6.0 694μs 2.46μs 9.54μs 0 0 0 42.6 KB
#7859 WriteAndFlushEnrichedTraces netcoreapp3.1 799μs 4.57μs 32.9μs 0 0 0 41.85 KB
#7859 WriteAndFlushEnrichedTraces net472 1.01ms 4.77μs 19.7μs 8.93 0 0 57.13 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.89μs 9.71ns 47.6ns 0 0 0 1.02 KB
master ExecuteNonQuery netcoreapp3.1 2.62μs 9.75ns 37.8ns 0 0 0 1.02 KB
master ExecuteNonQuery net472 2.86μs 3.4ns 13.2ns 0.156 0.0142 0 987 B
#7859 ExecuteNonQuery net6.0 1.98μs 1.25ns 4.83ns 0 0 0 1.02 KB
#7859 ExecuteNonQuery netcoreapp3.1 2.63μs 9.32ns 36.1ns 0 0 0 1.02 KB
#7859 ExecuteNonQuery net472 2.81μs 2.76ns 10.7ns 0.156 0.0141 0 987 B
Benchmarks.Trace.ElasticsearchBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master CallElasticsearch net6.0 1.7μs 7.41ns 27.7ns 0 0 0 1.03 KB
master CallElasticsearch netcoreapp3.1 2.23μs 7.38ns 26.6ns 0 0 0 1.03 KB
master CallElasticsearch net472 3.56μs 3.18ns 12.3ns 0.161 0 0 1.04 KB
master CallElasticsearchAsync net6.0 1.8μs 1.26ns 4.56ns 0 0 0 1.01 KB
master CallElasticsearchAsync netcoreapp3.1 2.32μs 11.2ns 46.2ns 0 0 0 1.08 KB
master CallElasticsearchAsync net472 3.84μs 4.65ns 18ns 0.173 0 0 1.1 KB
#7859 CallElasticsearch net6.0 1.73μs 6.91ns 26.8ns 0 0 0 1.03 KB
#7859 CallElasticsearch netcoreapp3.1 2.26μs 10.8ns 41.8ns 0 0 0 1.03 KB
#7859 CallElasticsearch net472 3.53μs 6.3ns 24.4ns 0.16 0 0 1.04 KB
#7859 CallElasticsearchAsync net6.0 1.81μs 4.12ns 16ns 0 0 0 1.01 KB
#7859 CallElasticsearchAsync netcoreapp3.1 2.38μs 9.08ns 35.2ns 0 0 0 1.08 KB
#7859 CallElasticsearchAsync net472 3.69μs 3.6ns 13ns 0.167 0 0 1.1 KB
Benchmarks.Trace.GraphQLBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master ExecuteAsync net6.0 1.85μs 5.4ns 20.9ns 0 0 0 952 B
master ExecuteAsync netcoreapp3.1 2.5μs 3.77ns 14.6ns 0 0 0 952 B
master ExecuteAsync net472 2.52μs 0.907ns 3.51ns 0.138 0 0 915 B
#7859 ExecuteAsync net6.0 1.83μs 8.53ns 34.1ns 0 0 0 952 B
#7859 ExecuteAsync netcoreapp3.1 2.55μs 7.44ns 28.8ns 0 0 0 952 B
#7859 ExecuteAsync net472 2.63μs 3.25ns 12.6ns 0.144 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μs 4.77ns 17.8ns 0 0 0 2.36 KB
master SendAsync netcoreapp3.1 9.15μs 26.8ns 104ns 0 0 0 2.9 KB
master SendAsync net472 12μs 6.39ns 23.9ns 0.481 0 0 3.18 KB
#7859 SendAsync net6.0 6.95μs 30.3ns 117ns 0 0 0 2.36 KB
#7859 SendAsync netcoreapp3.1 8.87μs 14.9ns 57.8ns 0 0 0 2.9 KB
#7859 SendAsync net472 12μs 8.01ns 31ns 0.478 0 0 3.18 KB
Benchmarks.Trace.Iast.StringAspectsBenchmark - Same speed ✔️ More allocations ⚠️

More allocations ⚠️ in #7859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑net6.0 258.88 KB 277.74 KB 18.86 KB 7.28%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatAspectBenchmark‑netcoreapp3.1 258.66 KB 276.04 KB 17.38 KB 6.72%

Fewer allocations 🎉 in #7859

Benchmark Base Allocated Diff Allocated Change Change %
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net6.0 43.44 KB 43.2 KB -240 B -0.55%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑netcoreapp3.1 43.19 KB 42.94 KB -248 B -0.57%
Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark‑net472 65.54 KB 57.34 KB -8.19 KB -12.50%

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master StringConcatBenchmark net6.0 45.5μs 252ns 2.09μs 0 0 0 43.44 KB
master StringConcatBenchmark netcoreapp3.1 50μs 290ns 2.28μs 0 0 0 43.19 KB
master StringConcatBenchmark net472 58.2μs 169ns 632ns 0 0 0 65.54 KB
master StringConcatAspectBenchmark net6.0 459μs 1.55μs 6.22μs 0 0 0 258.88 KB
master StringConcatAspectBenchmark netcoreapp3.1 523μs 2.54μs 10.8μs 0 0 0 258.66 KB
master StringConcatAspectBenchmark net472 411μs 2.07μs 10.5μs 0 0 0 278.53 KB
#7859 StringConcatBenchmark net6.0 44.3μs 227ns 990ns 0 0 0 43.2 KB
#7859 StringConcatBenchmark netcoreapp3.1 49.5μs 262ns 2.03μs 0 0 0 42.94 KB
#7859 StringConcatBenchmark net472 56.8μs 290ns 1.3μs 0 0 0 57.34 KB
#7859 StringConcatAspectBenchmark net6.0 500μs 2μs 7.2μs 0 0 0 277.74 KB
#7859 StringConcatAspectBenchmark netcoreapp3.1 524μs 2μs 7.22μs 0 0 0 276.04 KB
#7859 StringConcatAspectBenchmark net472 406μs 2.15μs 11μ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.67μs 13.7ns 61.1ns 0 0 0 1.7 KB
master EnrichedLog netcoreapp3.1 3.58μs 9.86ns 38.2ns 0 0 0 1.7 KB
master EnrichedLog net472 3.97μs 3.72ns 14.4ns 0.257 0 0 1.64 KB
#7859 EnrichedLog net6.0 2.57μs 13.8ns 78ns 0 0 0 1.7 KB
#7859 EnrichedLog netcoreapp3.1 3.59μs 8.62ns 33.4ns 0 0 0 1.7 KB
#7859 EnrichedLog net472 3.94μs 3.87ns 15ns 0.256 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 72.1ns 260ns 0 0 0 4.31 KB
master EnrichedLog netcoreapp3.1 128μs 72.6ns 262ns 0 0 0 4.31 KB
master EnrichedLog net472 166μs 232ns 897ns 0 0 0 4.52 KB
#7859 EnrichedLog net6.0 123μs 127ns 491ns 0 0 0 4.31 KB
#7859 EnrichedLog netcoreapp3.1 128μs 326ns 1.18μs 0 0 0 4.31 KB
#7859 EnrichedLog net472 165μs 81.4ns 294ns 0 0 0 4.51 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 23.5ns 97ns 0 0 0 2.26 KB
master EnrichedLog netcoreapp3.1 6.9μs 28.4ns 110ns 0 0 0 2.26 KB
master EnrichedLog net472 7.58μs 4.68ns 17.5ns 0.301 0 0 2.08 KB
#7859 EnrichedLog net6.0 4.92μs 17.4ns 60.3ns 0 0 0 2.26 KB
#7859 EnrichedLog netcoreapp3.1 7.11μs 28.2ns 109ns 0 0 0 2.26 KB
#7859 EnrichedLog net472 7.57μs 15.4ns 59.8ns 0.305 0 0 2.08 KB
Benchmarks.Trace.RedisBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master SendReceive net6.0 2.01μs 1.23ns 4.61ns 0 0 0 1.2 KB
master SendReceive netcoreapp3.1 2.52μs 12ns 48.2ns 0 0 0 1.2 KB
master SendReceive net472 3.19μs 5.06ns 19.6ns 0.189 0 0 1.2 KB
#7859 SendReceive net6.0 1.91μs 9.47ns 40.2ns 0 0 0 1.2 KB
#7859 SendReceive netcoreapp3.1 2.6μs 12.3ns 52.3ns 0 0 0 1.2 KB
#7859 SendReceive net472 3.14μs 2.57ns 9.95ns 0.188 0 0 1.2 KB
Benchmarks.Trace.SerilogBenchmark - Same speed ✔️ Same allocations ✔️

Raw results

Branch Method Toolchain Mean StdError StdDev Gen 0 Gen 1 Gen 2 Allocated
master EnrichedLog net6.0 4.31μs 13.3ns 49.9ns 0 0 0 1.58 KB
master EnrichedLog netcoreapp3.1 5.59μs 5.7ns 22.1ns 0 0 0 1.63 KB
master EnrichedLog net472 6.92μs 6.43ns 24.1ns 0.311 0 0 2.03 KB
#7859 EnrichedLog net6.0 4.42μs 4.78ns 18.5ns 0 0 0 1.58 KB
#7859 EnrichedLog netcoreapp3.1 5.51μs 19.8ns 76.7ns 0 0 0 1.63 KB
#7859 EnrichedLog net472 6.58μs 3.84ns 13.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 788ns 4.15ns 20.3ns 0 0 0 576 B
master StartFinishSpan netcoreapp3.1 973ns 4.79ns 19.7ns 0 0 0 576 B
master StartFinishSpan net472 942ns 0.772ns 2.99ns 0.09 0 0 578 B
master StartFinishScope net6.0 930ns 4.96ns 24.8ns 0 0 0 696 B
master StartFinishScope netcoreapp3.1 1.17μs 6.38ns 36.1ns 0 0 0 696 B
master StartFinishScope net472 1.18μs 0.919ns 3.44ns 0.1 0 0 658 B
#7859 StartFinishSpan net6.0 785ns 3.32ns 13.7ns 0 0 0 576 B
#7859 StartFinishSpan netcoreapp3.1 954ns 5.15ns 28.6ns 0 0 0 576 B
#7859 StartFinishSpan net472 959ns 0.168ns 0.605ns 0.0914 0 0 578 B
#7859 StartFinishScope net6.0 920ns 4.66ns 21.9ns 0 0 0 696 B
#7859 StartFinishScope netcoreapp3.1 1.2μs 3.04ns 11.8ns 0 0 0 696 B
#7859 StartFinishScope net472 1.16μs 0.452ns 1.75ns 0.104 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.6ns 22.4ns 0 0 0 696 B
master RunOnMethodBegin netcoreapp3.1 1.49μs 5.97ns 23.1ns 0 0 0 696 B
master RunOnMethodBegin net472 1.45μs 0.655ns 2.45ns 0.102 0 0 658 B
#7859 RunOnMethodBegin net6.0 1.09μs 5.86ns 31ns 0 0 0 696 B
#7859 RunOnMethodBegin netcoreapp3.1 1.46μs 2.78ns 10.8ns 0 0 0 696 B
#7859 RunOnMethodBegin net472 1.43μs 0.458ns 1.71ns 0.1 0 0 658 B

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

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

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7859) 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
duration74.65 ± (74.73 - 75.44) ms75.55 ± (75.74 - 76.65) ms+1.2%✅⬆️
.NET Framework 4.8 - Bailout
duration78.86 ± (78.59 - 79.18) ms82.31 ± (82.39 - 83.44) ms+4.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1056.80 ± (1061.21 - 1072.27) ms1070.31 ± (1074.03 - 1086.24) ms+1.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms22.96 ± (22.87 - 23.05) ms23.27 ± (23.18 - 23.36) ms+1.4%✅⬆️
process.time_to_main_ms87.69 ± (87.30 - 88.09) ms90.24 ± (89.67 - 90.80) ms+2.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.94 - 10.94) MB10.94 ± (10.93 - 10.94) MB-0.0%
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms22.90 ± (22.83 - 22.97) ms22.95 ± (22.88 - 23.02) ms+0.2%✅⬆️
process.time_to_main_ms90.11 ± (89.70 - 90.53) ms90.45 ± (90.03 - 90.86) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.98 ± (10.98 - 10.98) MB10.98 ± (10.98 - 10.99) MB+0.0%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms220.48 ± (219.02 - 221.93) ms223.57 ± (222.11 - 225.03) ms+1.4%✅⬆️
process.time_to_main_ms499.02 ± (497.87 - 500.18) ms508.65 ± (507.17 - 510.12) ms+1.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed47.76 ± (47.74 - 47.79) MB47.79 ± (47.77 - 47.81) MB+0.0%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.4%
.NET 6 - Baseline
process.internal_duration_ms21.65 ± (21.56 - 21.75) ms21.82 ± (21.74 - 21.89) ms+0.8%✅⬆️
process.time_to_main_ms76.17 ± (75.76 - 76.59) ms77.53 ± (77.16 - 77.91) ms+1.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.61 ± (10.61 - 10.61) MB10.63 ± (10.62 - 10.63) MB+0.1%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms21.72 ± (21.65 - 21.79) ms22.15 ± (22.06 - 22.24) ms+2.0%✅⬆️
process.time_to_main_ms77.57 ± (77.24 - 77.89) ms80.66 ± (80.18 - 81.13) ms+4.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.66 ± (10.66 - 10.66) MB10.72 ± (10.72 - 10.73) MB+0.6%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms213.60 ± (211.40 - 215.79) ms212.13 ± (210.53 - 213.72) ms-0.7%
process.time_to_main_ms468.00 ± (467.13 - 468.88) ms476.24 ± (474.97 - 477.51) ms+1.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.03 ± (48.00 - 48.05) MB48.03 ± (48.01 - 48.05) MB+0.0%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.0%
.NET 8 - Baseline
process.internal_duration_ms20.03 ± (19.96 - 20.10) ms20.02 ± (19.94 - 20.11) ms-0.1%
process.time_to_main_ms76.19 ± (75.85 - 76.53) ms76.92 ± (76.43 - 77.41) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.66 ± (7.65 - 7.66) MB7.64 ± (7.64 - 7.65) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.00 ± (19.95 - 20.06) ms20.08 ± (20.00 - 20.15) ms+0.4%✅⬆️
process.time_to_main_ms77.13 ± (76.84 - 77.42) ms78.74 ± (78.29 - 79.19) ms+2.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.70 ± (7.70 - 7.71) MB7.69 ± (7.69 - 7.70) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms192.54 ± (191.61 - 193.48) ms193.45 ± (192.39 - 194.50) ms+0.5%✅⬆️
process.time_to_main_ms456.57 ± (455.67 - 457.48) ms462.58 ± (461.22 - 463.94) ms+1.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.40 ± (36.36 - 36.44) MB36.52 ± (36.47 - 36.56) MB+0.3%✅⬆️
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
duration192.46 ± (192.43 - 193.26) ms201.69 ± (200.59 - 201.76) ms+4.8%✅⬆️
.NET Framework 4.8 - Bailout
duration196.34 ± (196.07 - 196.67) ms198.92 ± (198.77 - 199.67) ms+1.3%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1104.28 ± (1110.04 - 1119.65) ms1126.13 ± (1131.47 - 1142.97) ms+2.0%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms187.63 ± (187.29 - 187.97) ms193.27 ± (192.73 - 193.81) ms+3.0%✅⬆️
process.time_to_main_ms80.23 ± (80.04 - 80.42) ms83.33 ± (83.02 - 83.64) ms+3.9%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.06 ± (16.03 - 16.09) MB16.05 ± (16.03 - 16.07) MB-0.1%
runtime.dotnet.threads.count19 ± (19 - 20)20 ± (20 - 20)+0.4%✅⬆️
.NET Core 3.1 - Bailout
process.internal_duration_ms187.08 ± (186.77 - 187.38) ms190.46 ± (189.99 - 190.93) ms+1.8%✅⬆️
process.time_to_main_ms81.72 ± (81.59 - 81.85) ms83.56 ± (83.37 - 83.75) ms+2.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.15 ± (16.13 - 16.18) MB16.16 ± (16.14 - 16.18) MB+0.0%✅⬆️
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.3%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms401.57 ± (398.56 - 404.58) ms404.91 ± (402.12 - 407.70) ms+0.8%✅⬆️
process.time_to_main_ms469.82 ± (469.27 - 470.37) ms479.82 ± (478.95 - 480.69) ms+2.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.26 ± (58.12 - 58.41) MB58.69 ± (58.58 - 58.80) MB+0.7%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms191.33 ± (190.98 - 191.68) ms194.72 ± (194.27 - 195.16) ms+1.8%✅⬆️
process.time_to_main_ms69.68 ± (69.51 - 69.86) ms71.53 ± (71.30 - 71.75) ms+2.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.04 ± (15.88 - 16.20) MB16.33 ± (16.27 - 16.38) MB+1.8%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)19 ± (19 - 19)+4.9%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms190.15 ± (189.93 - 190.37) ms194.43 ± (194.02 - 194.83) ms+2.2%✅⬆️
process.time_to_main_ms70.37 ± (70.31 - 70.44) ms72.01 ± (71.85 - 72.18) ms+2.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.02 ± (15.86 - 16.18) MB16.32 ± (16.25 - 16.39) MB+1.9%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+4.2%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms418.39 ± (415.12 - 421.66) ms416.01 ± (413.58 - 418.45) ms-0.6%
process.time_to_main_ms442.71 ± (442.09 - 443.34) ms447.23 ± (446.42 - 448.03) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.63 ± (58.49 - 58.76) MB58.96 ± (58.84 - 59.07) MB+0.6%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms190.44 ± (190.10 - 190.78) ms190.64 ± (190.27 - 191.02) ms+0.1%✅⬆️
process.time_to_main_ms69.32 ± (69.15 - 69.48) ms70.06 ± (69.85 - 70.26) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.76 ± (11.74 - 11.79) MB11.75 ± (11.72 - 11.78) MB-0.1%
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)-0.2%
.NET 8 - Bailout
process.internal_duration_ms189.46 ± (189.20 - 189.72) ms189.90 ± (189.62 - 190.19) ms+0.2%✅⬆️
process.time_to_main_ms70.28 ± (70.17 - 70.39) ms70.78 ± (70.67 - 70.88) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.81 ± (11.76 - 11.87) MB11.80 ± (11.77 - 11.83) MB-0.1%
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.9%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms370.02 ± (368.60 - 371.44) ms368.76 ± (367.44 - 370.08) ms-0.3%
process.time_to_main_ms433.91 ± (433.08 - 434.74) ms430.62 ± (430.03 - 431.22) ms-0.8%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.85 ± (47.82 - 47.88) MB47.93 ± (47.89 - 47.96) MB+0.2%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.8%✅⬆️
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 (7859) - mean (76ms)  : 69, 83
    master - mean (75ms)  : 70, 80

    section Bailout
    This PR (7859) - mean (83ms)  : 75, 91
    master - mean (79ms)  : 74, 83

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (1,080ms)  : 989, 1172
    master - mean (1,067ms)  : 986, 1147

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 (7859) - mean (121ms)  : 110, 133
    master - mean (118ms)  : 110, 126

    section Bailout
    This PR (7859) - mean (121ms)  : 114, 128
    master - mean (120ms)  : 112, 129

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (771ms)  : 716, 825
    master - mean (760ms)  : 719, 800

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

    section Bailout
    This PR (7859) - mean (110ms)  : 100, 120
    master - mean (106ms)  : 101, 112

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (724ms)  : 670, 778
    master - mean (713ms)  : 668, 758

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7859) - mean (106ms)  : 96, 115
    master - mean (105ms)  : 97, 113

    section Bailout
    This PR (7859) - mean (108ms)  : 98, 118
    master - mean (106ms)  : 101, 111

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (691ms)  : 655, 727
    master - mean (688ms)  : 660, 716

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 (7859) - mean (201ms)  : 193, 210
    master - mean (193ms)  : 189, 197

    section Bailout
    This PR (7859) - mean (199ms)  : 194, 204
    master - mean (196ms)  : 193, 199

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (1,137ms)  : 1049, 1226
    master - mean (1,115ms)  : 1045, 1185

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 (7859) - mean (285ms)  : 274, 297
    master - mean (276ms)  : 272, 281

    section Bailout
    This PR (7859) - mean (283ms)  : 273, 293
    master - mean (277ms)  : 274, 280

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (926ms)  : 877, 974
    master - mean (903ms)  : 851, 955

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

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

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (899ms)  : 857, 941
    master - mean (893ms)  : 833, 953

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7859) - mean (271ms)  : 265, 277
    master - mean (270ms)  : 265, 274

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

    section CallTarget+Inlining+NGEN
    This PR (7859) - mean (831ms)  : 807, 855
    master - mean (835ms)  : 808, 862

Loading

@tonyredondo tonyredondo changed the title [Debugger] Add agent-less support to Exception Replay [Debugger-Test Optimization] Add agent-less support to ER Nov 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants