Skip to content

[Profiler] Add managed code cache#7956

Merged
gleocadie merged 12 commits intomasterfrom
gleocadie/add-managed-code-cache
Feb 3, 2026
Merged

[Profiler] Add managed code cache#7956
gleocadie merged 12 commits intomasterfrom
gleocadie/add-managed-code-cache

Conversation

@gleocadie
Copy link
Collaborator

@gleocadie gleocadie commented Dec 16, 2025

Summary of changes

Introduce Managed Code cache component.

Reason for change

A managed code cache is a cache that holds managed (code) functions code ranges. The goal is two-fold:

  • Prevent crashing: we have crash reports where crashes in the profiler happen when calling GetFunctionFromIP. This can occur when querying a function Id for an instruction pointer and we race against a deallocation.
  • Contributing (in another PR) to ARM64 unwinding.

Implementation details

  • The managed code cache listens to jitted functions and R2R modules loading and caches functions code ranges.
  • In case of R2R modules, we can cache the module code ranges by reading the PE file. When querying for a function id, if the instruction pointer belongs to a R2R module, we call into GetFunctionFromIP to enrich our cache.
  • For now this managed code cache is not used by default but can be enabled by setting the env var DD_INTERNAL_PROFILING_USE_MANAGED_CODE_CACHE=1. We will ask customer to set this env var and if crash reports related to GetFunctionFromIP are less frequent, we will make it default.

Test coverage

  • Add a test to make sure that an exception callstack is still good.

Other details

@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch 2 times, most recently from 351024c to 48a3bea Compare December 16, 2025 15:38
@pr-commenter
Copy link

pr-commenter bot commented Dec 16, 2025

Benchmarks

Benchmark execution time: 2026-02-02 16:41:22

Comparing candidate commit f8c8abf in PR branch gleocadie/add-managed-code-cache with baseline commit c9cca03 in branch master.

Found 8 performance improvements and 15 performance regressions! Performance is the same for 150 metrics, 19 unstable metrics.

scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild netcoreapp3.1

  • 🟩 execution_time [-108.361ms; -105.900ms] or [-55.248%; -53.993%]

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟥 execution_time [+78.374ms; +78.442ms] or [+64.794%; +64.850%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net6.0

  • 🟩 execution_time [-28.573ms; -24.232ms] or [-13.003%; -11.027%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody net6.0

  • 🟩 execution_time [-85.412ms; -81.111ms] or [-42.692%; -40.542%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorSimpleBody net6.0

  • 🟥 execution_time [+17.702ms; +22.530ms] or [+8.838%; +11.249%]

scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs net6.0

  • 🟥 execution_time [+22.796ms; +23.252ms] or [+12.770%; +13.025%]

scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net472

  • 🟥 throughput [-62573869.698op/s; -61576767.127op/s] or [-31.382%; -30.882%]

scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net6.0

  • 🟥 execution_time [+103.872ms; +104.972ms] or [+112.436%; +113.627%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟩 throughput [+87.724op/s; +113.036op/s] or [+8.278%; +10.666%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0

  • 🟩 execution_time [-35.088ms; -30.517ms] or [-19.631%; -17.074%]
  • 🟩 throughput [+186.798op/s; +228.213op/s] or [+12.996%; +15.877%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1

  • 🟥 execution_time [+45.136ms; +48.990ms] or [+34.259%; +37.185%]
  • 🟥 throughput [-370.851op/s; -336.257op/s] or [-21.812%; -19.777%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0

  • 🟥 execution_time [+156.722µs; +164.264µs] or [+9.995%; +10.476%]
  • 🟥 throughput [-60.508op/s; -57.913op/s] or [-9.488%; -9.081%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice netcoreapp3.1

  • 🟥 throughput [-166.275op/s; -122.316op/s] or [-33.295%; -24.493%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net472

  • 🟥 execution_time [+118.598µs; +122.949µs] or [+10.469%; +10.853%]
  • 🟥 throughput [-86.602op/s; -83.494op/s] or [-9.810%; -9.458%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch net6.0

  • 🟥 execution_time [+16.709ms; +20.135ms] or [+8.600%; +10.363%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore netcoreapp3.1

  • 🟩 throughput [+14080661.269op/s; +15595782.431op/s] or [+6.241%; +6.913%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishScope netcoreapp3.1

  • 🟥 execution_time [+12.110ms; +17.509ms] or [+6.146%; +8.886%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan net6.0

  • 🟩 throughput [+68669.914op/s; +93904.737op/s] or [+5.515%; +7.542%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net6.0

  • 🟥 execution_time [+16.230ms; +21.595ms] or [+8.206%; +10.919%]

@datadog-datadog-prod-us1

This comment has been minimized.

@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch from 48a3bea to a68c150 Compare December 16, 2025 21:44
@dd-trace-dotnet-ci-bot
Copy link

dd-trace-dotnet-ci-bot bot commented Dec 16, 2025

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (7956) 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
duration79.57 ± (79.42 - 79.74) ms79.59 ± (79.56 - 79.98) ms+0.0%✅⬆️
.NET Framework 4.8 - Bailout
duration84.02 ± (83.87 - 84.27) ms84.38 ± (84.18 - 84.61) ms+0.4%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1110.70 ± (1112.55 - 1118.94) ms1115.53 ± (1113.55 - 1119.69) ms+0.4%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms24.41 ± (24.35 - 24.46) ms24.26 ± (24.20 - 24.33) ms-0.6%
process.time_to_main_ms94.89 ± (94.69 - 95.08) ms94.18 ± (93.92 - 94.44) ms-0.7%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.90 ± (10.90 - 10.90) MB10.92 ± (10.92 - 10.92) MB+0.2%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms24.32 ± (24.25 - 24.39) ms24.18 ± (24.10 - 24.25) ms-0.6%
process.time_to_main_ms96.13 ± (95.89 - 96.36) ms94.96 ± (94.70 - 95.23) ms-1.2%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.93 - 10.94) MB10.95 ± (10.95 - 10.96) MB+0.1%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms232.43 ± (229.53 - 235.34) ms238.34 ± (234.82 - 241.86) ms+2.5%✅⬆️
process.time_to_main_ms534.34 ± (533.40 - 535.27) ms538.37 ± (537.39 - 539.35) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.53 ± (48.51 - 48.55) MB48.59 ± (48.57 - 48.61) MB+0.1%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms22.71 ± (22.66 - 22.77) ms22.62 ± (22.58 - 22.66) ms-0.4%
process.time_to_main_ms80.64 ± (80.42 - 80.86) ms80.92 ± (80.71 - 81.13) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.61 - 10.62) MB10.66 ± (10.65 - 10.66) MB+0.4%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms22.55 ± (22.49 - 22.62) ms22.62 ± (22.57 - 22.66) ms+0.3%✅⬆️
process.time_to_main_ms81.83 ± (81.61 - 82.04) ms82.17 ± (81.99 - 82.34) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.77 ± (10.76 - 10.79) MB10.76 ± (10.75 - 10.76) MB-0.2%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms232.22 ± (228.42 - 236.01) ms229.49 ± (225.66 - 233.31) ms-1.2%
process.time_to_main_ms504.98 ± (504.15 - 505.80) ms508.88 ± (508.05 - 509.70) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed49.20 ± (49.18 - 49.22) MB49.15 ± (49.13 - 49.16) MB-0.1%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 8 - Baseline
process.internal_duration_ms20.77 ± (20.72 - 20.82) ms20.96 ± (20.90 - 21.02) ms+0.9%✅⬆️
process.time_to_main_ms79.46 ± (79.27 - 79.64) ms80.18 ± (80.00 - 80.36) ms+0.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.64 ± (7.64 - 7.65) MB7.70 ± (7.69 - 7.70) MB+0.7%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.71 ± (20.64 - 20.77) ms21.13 ± (21.07 - 21.20) ms+2.1%✅⬆️
process.time_to_main_ms80.40 ± (80.21 - 80.60) ms82.48 ± (82.27 - 82.69) ms+2.6%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.72 ± (7.71 - 7.73) MB7.76 ± (7.75 - 7.77) MB+0.5%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms198.15 ± (197.44 - 198.85) ms201.70 ± (200.75 - 202.65) ms+1.8%✅⬆️
process.time_to_main_ms486.05 ± (484.93 - 487.17) ms494.09 ± (493.00 - 495.18) ms+1.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.98 ± (36.94 - 37.03) MB37.09 ± (37.05 - 37.13) 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
duration210.41 ± (209.98 - 211.36) ms212.12 ± (211.76 - 213.42) ms+0.8%✅⬆️
.NET Framework 4.8 - Bailout
duration222.84 ± (221.96 - 223.76) ms215.42 ± (215.05 - 216.24) ms-3.3%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1217.94 ± (1218.05 - 1228.95) ms1195.50 ± (1194.91 - 1201.52) ms-1.8%
.NET Core 3.1 - Baseline
process.internal_duration_ms204.47 ± (203.84 - 205.10) ms203.25 ± (202.65 - 203.86) ms-0.6%
process.time_to_main_ms87.57 ± (87.28 - 87.85) ms86.92 ± (86.66 - 87.18) ms-0.7%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed15.91 ± (15.89 - 15.93) MB15.92 ± (15.91 - 15.94) MB+0.1%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-1.1%
.NET Core 3.1 - Bailout
process.internal_duration_ms203.96 ± (203.24 - 204.67) ms205.52 ± (204.61 - 206.44) ms+0.8%✅⬆️
process.time_to_main_ms88.84 ± (88.61 - 89.06) ms89.74 ± (89.33 - 90.15) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed15.97 ± (15.96 - 15.99) MB15.92 ± (15.90 - 15.93) MB-0.4%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)+0.3%✅⬆️
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms430.29 ± (426.92 - 433.65) ms427.61 ± (424.06 - 431.17) ms-0.6%
process.time_to_main_ms510.96 ± (509.83 - 512.09) ms508.21 ± (506.91 - 509.50) ms-0.5%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed59.13 ± (59.02 - 59.23) MB59.11 ± (59.00 - 59.21) MB-0.0%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 30)+0.2%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms208.39 ± (207.64 - 209.14) ms206.43 ± (205.84 - 207.02) ms-0.9%
process.time_to_main_ms76.38 ± (76.01 - 76.76) ms74.74 ± (74.53 - 74.95) ms-2.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.21 ± (16.19 - 16.23) MB16.25 ± (16.23 - 16.26) MB+0.2%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)-0.0%
.NET 6 - Bailout
process.internal_duration_ms213.47 ± (212.15 - 214.79) ms206.65 ± (205.92 - 207.38) ms-3.2%
process.time_to_main_ms78.50 ± (78.21 - 78.80) ms76.19 ± (75.96 - 76.43) ms-2.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.20 ± (16.18 - 16.22) MB16.22 ± (16.21 - 16.24) MB+0.1%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+0.1%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms453.80 ± (449.94 - 457.66) ms451.99 ± (448.33 - 455.65) ms-0.4%
process.time_to_main_ms485.55 ± (484.65 - 486.45) ms481.28 ± (480.33 - 482.23) ms-0.9%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed58.90 ± (58.73 - 59.08) MB59.17 ± (58.99 - 59.35) MB+0.5%✅⬆️
runtime.dotnet.threads.count30 ± (29 - 30)30 ± (30 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms212.87 ± (211.88 - 213.85) ms210.53 ± (209.55 - 211.50) ms-1.1%
process.time_to_main_ms76.37 ± (76.09 - 76.66) ms75.59 ± (75.30 - 75.89) ms-1.0%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.50 ± (11.49 - 11.52) MB11.55 ± (11.53 - 11.56) MB+0.4%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.1%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms212.98 ± (211.70 - 214.26) ms210.11 ± (209.28 - 210.95) ms-1.3%
process.time_to_main_ms77.99 ± (77.59 - 78.40) ms77.06 ± (76.80 - 77.32) ms-1.2%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.54 ± (11.52 - 11.55) MB11.58 ± (11.56 - 11.59) MB+0.4%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms457.43 ± (450.40 - 464.46) ms413.67 ± (406.41 - 420.93) ms-9.6%
process.time_to_main_ms473.51 ± (472.71 - 474.32) ms467.29 ± (466.28 - 468.30) ms-1.3%
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.1%✅⬆️
runtime.dotnet.mem.committed50.43 ± (50.34 - 50.52) MB49.63 ± (49.46 - 49.79) MB-1.6%
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)-0.5%
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 (7956) - mean (80ms)  : 77, 83
    master - mean (80ms)  : 77, 82

    section Bailout
    This PR (7956) - mean (84ms)  : 82, 87
    master - mean (84ms)  : 82, 86

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (1,117ms)  : 1072, 1161
    master - mean (1,116ms)  : 1068, 1163

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 (7956) - mean (126ms)  : 123, 129
    master - mean (127ms)  : 124, 130

    section Bailout
    This PR (7956) - mean (126ms)  : 124, 129
    master - mean (128ms)  : 125, 131

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (819ms)  : 766, 871
    master - mean (810ms)  : 758, 862

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

    section Bailout
    This PR (7956) - mean (112ms)  : 109, 114
    master - mean (111ms)  : 108, 114

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (777ms)  : 718, 837
    master - mean (770ms)  : 701, 838

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

    section Bailout
    This PR (7956) - mean (112ms)  : 109, 115
    master - mean (109ms)  : 106, 112

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (739ms)  : 720, 758
    master - mean (725ms)  : 700, 750

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 (7956) - mean (213ms)  : 200, 225
    master - mean (211ms)  : 201, 221

    section Bailout
    This PR (7956) - mean (216ms)  : 207, 224
    master - mean (223ms)  : 209, 236

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (1,198ms)  : 1149, 1247
    master - mean (1,224ms)  : 1139, 1308

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 (7956) - mean (300ms)  : 286, 314
    master - mean (301ms)  : 289, 314

    section Bailout
    This PR (7956) - mean (305ms)  : 284, 327
    master - mean (302ms)  : 287, 317

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (977ms)  : 921, 1032
    master - mean (984ms)  : 929, 1038

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7956) - mean (290ms)  : 279, 302
    master - mean (294ms)  : 280, 309

    section Bailout
    This PR (7956) - mean (292ms)  : 279, 306
    master - mean (302ms)  : 280, 324

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (966ms)  : 910, 1023
    master - mean (976ms)  : 917, 1034

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7956) - mean (297ms)  : 280, 313
    master - mean (300ms)  : 281, 319

    section Bailout
    This PR (7956) - mean (298ms)  : 284, 312
    master - mean (302ms)  : 276, 328

    section CallTarget+Inlining+NGEN
    This PR (7956) - mean (911ms)  : 805, 1018
    master - mean (965ms)  : 858, 1072

Loading

@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch 12 times, most recently from ba4ecf7 to 214f1b1 Compare December 19, 2025 07:57
@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch 3 times, most recently from 997966f to 1601550 Compare January 19, 2026 09:09
@github-actions github-actions bot added the area:profiler Issues related to the continous-profiler label Jan 19, 2026
@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch 6 times, most recently from dfee890 to dcc4b43 Compare January 26, 2026 09:21
@gleocadie gleocadie marked this pull request as ready for review January 26, 2026 09:29
@gleocadie gleocadie requested a review from a team as a code owner January 26, 2026 09:29
@gleocadie gleocadie changed the title Gleocadie/add managed code cache [Profiler] Add managed code cache Jan 26, 2026
@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch 3 times, most recently from 68f017e to 7a73bf4 Compare February 2, 2026 15:56
@gleocadie gleocadie force-pushed the gleocadie/add-managed-code-cache branch from 7a73bf4 to f8c8abf Compare February 2, 2026 15:59
Copy link
Contributor

@chrisnas chrisnas left a comment

Choose a reason for hiding this comment

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

LGTM

Comment on lines +149 to +150


Copy link
Contributor

Choose a reason for hiding this comment

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

remove these 2 empty lines

@gleocadie gleocadie merged commit bf3acca into master Feb 3, 2026
146 of 148 checks passed
@gleocadie gleocadie deleted the gleocadie/add-managed-code-cache branch February 3, 2026 09:52
@github-actions github-actions bot added this to the vNext-v3 milestone Feb 3, 2026
gleocadie added a commit that referenced this pull request Feb 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:profiler Issues related to the continous-profiler

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants