Conversation
Execution-Time Benchmarks Report ⏱️Execution-time results for samples comparing This PR (8225) and master. ✅ No regressions detected - check the details below Full Metrics ComparisonFakeDbCommand
HttpMessageHandler
Comparison explanationExecution-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:
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 chartsFakeDbCommand (.NET Framework 4.8)gantt
title Execution time (ms) FakeDbCommand (.NET Framework 4.8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (75ms) : 73, 77
master - mean (75ms) : 72, 77
section Bailout
This PR (8225) - mean (80ms) : 78, 82
master - mean (79ms) : 77, 81
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,086ms) : 1047, 1124
master - mean (1,079ms) : 1039, 1118
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 (8225) - mean (117ms) : 114, 120
master - mean (115ms) : 111, 120
section Bailout
This PR (8225) - mean (118ms) : 116, 121
master - mean (117ms) : 114, 120
section CallTarget+Inlining+NGEN
This PR (8225) - mean (772ms) : 702, 842
master - mean (763ms) : 706, 820
FakeDbCommand (.NET 6)gantt
title Execution time (ms) FakeDbCommand (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (104ms) : 101, 107
master - mean (102ms) : 99, 105
section Bailout
This PR (8225) - mean (106ms) : 104, 108
master - mean (104ms) : 101, 107
section CallTarget+Inlining+NGEN
This PR (8225) - mean (771ms) : 710, 831
master - mean (759ms) : 700, 819
FakeDbCommand (.NET 8)gantt
title Execution time (ms) FakeDbCommand (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (104ms) : 101, 106
master - mean (101ms) : 98, 103
section Bailout
This PR (8225) - mean (105ms) : 103, 108
master - mean (102ms) : 99, 105
section CallTarget+Inlining+NGEN
This PR (8225) - mean (691ms) : 671, 711
master - mean (666ms) : 654, 679
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 (8225) - mean (194ms) : 190, 198
master - mean (197ms) : 180, 215
section Bailout
This PR (8225) - mean (197ms) : 194, 200
master - mean (199ms) : 195, 202
section CallTarget+Inlining+NGEN
This PR (8225) - mean (1,147ms) : 1078, 1216
master - mean (1,144ms) : 1087, 1202
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 (8225) - mean (279ms) : 275, 283
master - mean (280ms) : 272, 287
section Bailout
This PR (8225) - mean (279ms) : 275, 282
master - mean (279ms) : 275, 283
section CallTarget+Inlining+NGEN
This PR (8225) - mean (938ms) : 895, 982
master - mean (944ms) : 909, 980
HttpMessageHandler (.NET 6)gantt
title Execution time (ms) HttpMessageHandler (.NET 6)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (271ms) : 266, 275
master - mean (271ms) : 266, 276
section Bailout
This PR (8225) - mean (271ms) : 267, 275
master - mean (271ms) : 267, 275
section CallTarget+Inlining+NGEN
This PR (8225) - mean (931ms) : 904, 959
master - mean (931ms) : 909, 954
HttpMessageHandler (.NET 8)gantt
title Execution time (ms) HttpMessageHandler (.NET 8)
dateFormat x
axisFormat %Q
todayMarker off
section Baseline
This PR (8225) - mean (275ms) : 266, 284
master - mean (271ms) : 266, 276
section Bailout
This PR (8225) - mean (275ms) : 270, 279
master - mean (270ms) : 266, 275
section CallTarget+Inlining+NGEN
This PR (8225) - mean (852ms) : 816, 888
master - mean (828ms) : 809, 846
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
BenchmarksBenchmark execution time: 2026-02-20 12:09:26 Comparing candidate commit 1b8f20c in PR branch Found 3 performance improvements and 9 performance regressions! Performance is the same for 161 metrics, 19 unstable metrics. scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1
scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody net6.0
scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs netcoreapp3.1
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net6.0
scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces netcoreapp3.1
scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net6.0
scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore netcoreapp3.1
scenario:Benchmarks.Trace.SpanBenchmark.StartFinishSpan net6.0
|
Summary of changes
Generate reference chain at type level
Reason for change
Last step to help pointing out memory leaks root cause (i.e. which root is responsible for keeping instances alive)
Implementation details
Listen to GC_BULK_ROOT_STATIC_VAR and GC_BULK_ROOT_EDGE to get the different kinds of root. Next, traverse the reference fields down to a leak (i.e. non reference object). The reference chain is kept at the type level to avoid consumming to much memory and serialized in .json format to be sent with profile data.
Test coverage
Unit tests and integration tests have been added.
Other details