Skip to content

Update microbenchmarks to enable standard BP PR comments#7952

Merged
igoragoli merged 12 commits intomasterfrom
augusto/apmsp-2289.add-bp-pr-commenter
Dec 17, 2025
Merged

Update microbenchmarks to enable standard BP PR comments#7952
igoragoli merged 12 commits intomasterfrom
augusto/apmsp-2289.add-bp-pr-commenter

Conversation

@igoragoli
Copy link
Contributor

@igoragoli igoragoli commented Dec 15, 2025

Summary of changes

Less importantly:

  • Add BP_INFRA_TEST to facilitate testing.

Reason for change

https://datadoghq.atlassian.net/browse/APMSP-2289

Implementation details

Test coverage

Other details

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Dec 15, 2025

⚠️ Tests

Fix all issues with Cursor

⚠️ Warnings

❄️ 1 New flaky test detected

HandlesBatchProcessing from Datadog.Trace.ClrProfiler.IntegrationTests.DataStreamsMonitoringKafkaTests (Datadog) (Fix with Cursor)
Results do not match.
Differences:
Received: DataStreamsMonitoringKafkaTests.HandlesBatchProcessing.received.txt
Verified: DataStreamsMonitoringKafkaTests.HandlesBatchProcessing.verified.txt
Compare Result:
  {
    Env: integration_tests,
    Service: Samples.DataStreams.Kafka,
    TracerVersion: <snip>,
    Lang: dotnet,
...

ℹ️ Info

🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 8667b4a | Docs | Datadog PR Page | Was this helpful? Give us feedback!

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

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

Execution-Time Benchmarks Report ⏱️

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

✅ No regressions detected - check the details below

Full Metrics Comparison

FakeDbCommand

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration68.13 ± (68.13 - 68.35) ms68.42 ± (68.43 - 68.68) ms+0.4%✅⬆️
.NET Framework 4.8 - Bailout
duration71.94 ± (71.81 - 72.01) ms72.13 ± (72.10 - 72.32) ms+0.3%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1001.47 ± (1007.97 - 1017.63) ms1001.86 ± (1003.44 - 1008.95) ms+0.0%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms21.96 ± (21.94 - 21.99) ms21.94 ± (21.92 - 21.96) ms-0.1%
process.time_to_main_ms78.40 ± (78.23 - 78.56) ms78.70 ± (78.52 - 78.88) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.91 ± (10.90 - 10.91) MB10.91 ± (10.91 - 10.92) MB+0.0%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms21.90 ± (21.88 - 21.92) ms21.91 ± (21.89 - 21.93) ms+0.1%✅⬆️
process.time_to_main_ms79.42 ± (79.33 - 79.52) ms79.65 ± (79.56 - 79.75) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.94 - 10.94) MB10.96 ± (10.96 - 10.97) MB+0.2%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms211.56 ± (209.85 - 213.28) ms211.18 ± (209.67 - 212.69) ms-0.2%
process.time_to_main_ms471.87 ± (471.29 - 472.45) ms473.79 ± (473.11 - 474.48) ms+0.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.05 ± (48.03 - 48.07) MB48.14 ± (48.12 - 48.16) MB+0.2%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.0%
.NET 6 - Baseline
process.internal_duration_ms20.59 ± (20.55 - 20.62) ms20.64 ± (20.62 - 20.66) ms+0.3%✅⬆️
process.time_to_main_ms67.89 ± (67.74 - 68.03) ms67.87 ± (67.75 - 67.99) ms-0.0%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.62 ± (10.62 - 10.62) MB10.64 ± (10.64 - 10.64) MB+0.2%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms20.51 ± (20.49 - 20.54) ms20.61 ± (20.58 - 20.64) ms+0.5%✅⬆️
process.time_to_main_ms68.69 ± (68.64 - 68.75) ms68.81 ± (68.76 - 68.85) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.68 ± (10.68 - 10.69) MB10.67 ± (10.66 - 10.67) MB-0.1%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms201.55 ± (200.42 - 202.69) ms200.66 ± (199.56 - 201.75) ms-0.4%
process.time_to_main_ms440.63 ± (439.88 - 441.38) ms438.62 ± (438.10 - 439.15) ms-0.5%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.41 ± (48.36 - 48.47) MB48.21 ± (48.14 - 48.29) MB-0.4%
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms18.80 ± (18.78 - 18.82) ms18.76 ± (18.73 - 18.79) ms-0.2%
process.time_to_main_ms67.01 ± (66.91 - 67.11) ms66.83 ± (66.74 - 66.91) ms-0.3%
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.69 ± (7.68 - 7.70) MB7.68 ± (7.67 - 7.68) MB-0.2%
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms18.76 ± (18.73 - 18.78) ms18.71 ± (18.68 - 18.74) ms-0.3%
process.time_to_main_ms67.95 ± (67.89 - 68.02) ms68.06 ± (68.00 - 68.12) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.73 ± (7.72 - 7.74) MB7.73 ± (7.72 - 7.74) MB-0.0%
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms178.28 ± (177.29 - 179.26) ms178.15 ± (177.29 - 179.00) ms-0.1%
process.time_to_main_ms421.86 ± (421.31 - 422.41) ms423.07 ± (422.61 - 423.53) ms+0.3%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed36.26 ± (36.22 - 36.30) MB36.38 ± (36.35 - 36.41) 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
duration193.44 ± (193.61 - 194.53) ms194.39 ± (194.20 - 194.92) ms+0.5%✅⬆️
.NET Framework 4.8 - Bailout
duration196.93 ± (196.66 - 197.21) ms197.51 ± (197.27 - 197.82) ms+0.3%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1108.26 ± (1109.47 - 1116.57) ms1118.60 ± (1119.75 - 1128.80) ms+0.9%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms188.24 ± (187.80 - 188.68) ms187.74 ± (187.41 - 188.07) ms-0.3%
process.time_to_main_ms80.54 ± (80.34 - 80.74) ms80.65 ± (80.47 - 80.82) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.11 ± (16.08 - 16.14) MB16.10 ± (16.07 - 16.13) MB-0.1%
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.5%
.NET Core 3.1 - Bailout
process.internal_duration_ms187.26 ± (186.95 - 187.57) ms187.81 ± (187.52 - 188.10) ms+0.3%✅⬆️
process.time_to_main_ms81.81 ± (81.68 - 81.94) ms82.20 ± (82.06 - 82.34) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.13 ± (16.10 - 16.16) MB16.13 ± (16.10 - 16.16) MB-0.0%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (20 - 21)-0.1%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms398.33 ± (395.71 - 400.96) ms398.19 ± (395.52 - 400.87) ms-0.0%
process.time_to_main_ms476.18 ± (475.48 - 476.89) ms476.22 ± (475.46 - 476.98) ms+0.0%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed58.66 ± (58.52 - 58.79) MB58.46 ± (58.31 - 58.60) MB-0.3%
runtime.dotnet.threads.count29 ± (29 - 30)29 ± (29 - 30)+0.0%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms191.96 ± (191.55 - 192.38) ms195.36 ± (194.89 - 195.83) ms+1.8%✅⬆️
process.time_to_main_ms69.95 ± (69.76 - 70.14) ms70.65 ± (70.43 - 70.86) ms+1.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed15.96 ± (15.81 - 16.11) MB16.37 ± (16.33 - 16.41) MB+2.5%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 19)19 ± (19 - 19)+4.6%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms191.01 ± (190.74 - 191.28) ms193.18 ± (192.76 - 193.59) ms+1.1%✅⬆️
process.time_to_main_ms70.83 ± (70.74 - 70.92) ms71.37 ± (71.20 - 71.54) ms+0.8%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.16 ± (16.03 - 16.30) MB16.24 ± (16.11 - 16.36) MB+0.5%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (19 - 20)+2.4%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms412.12 ± (409.68 - 414.56) ms409.18 ± (406.96 - 411.40) ms-0.7%
process.time_to_main_ms444.71 ± (443.94 - 445.49) ms446.78 ± (446.06 - 447.49) ms+0.5%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.24 ± (59.11 - 59.36) MB59.06 ± (58.92 - 59.20) MB-0.3%
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms189.55 ± (189.25 - 189.84) ms190.66 ± (190.27 - 191.05) ms+0.6%✅⬆️
process.time_to_main_ms69.08 ± (68.91 - 69.25) ms69.87 ± (69.68 - 70.06) ms+1.1%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.68 ± (11.66 - 11.71) MB11.78 ± (11.75 - 11.82) MB+0.9%✅⬆️
runtime.dotnet.threads.count18 ± (18 - 18)18 ± (18 - 18)+0.0%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms190.20 ± (189.78 - 190.61) ms190.33 ± (190.00 - 190.67) ms+0.1%✅⬆️
process.time_to_main_ms70.35 ± (70.23 - 70.47) ms70.77 ± (70.63 - 70.92) ms+0.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.77 ± (11.74 - 11.80) MB11.84 ± (11.81 - 11.86) MB+0.5%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+0.1%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms363.94 ± (362.59 - 365.29) ms368.01 ± (366.44 - 369.58) ms+1.1%✅⬆️
process.time_to_main_ms426.63 ± (426.06 - 427.19) ms429.70 ± (429.01 - 430.39) ms+0.7%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed47.96 ± (47.93 - 47.99) MB47.97 ± (47.94 - 47.99) MB+0.0%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+0.3%✅⬆️
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 (7952) - mean (69ms)  : 67, 70
    master - mean (68ms)  : 67, 70

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

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (1,006ms)  : 966, 1046
    master - mean (1,013ms)  : 941, 1084

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 (7952) - mean (106ms)  : 103, 109
    master - mean (106ms)  : 103, 108

    section Bailout
    This PR (7952) - mean (107ms)  : 106, 108
    master - mean (106ms)  : 105, 107

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (714ms)  : 679, 749
    master - mean (709ms)  : 681, 737

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

    section Bailout
    This PR (7952) - mean (94ms)  : 93, 95
    master - mean (94ms)  : 93, 95

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (666ms)  : 646, 687
    master - mean (669ms)  : 644, 695

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (7952) - mean (92ms)  : 89, 94
    master - mean (92ms)  : 90, 94

    section Bailout
    This PR (7952) - mean (93ms)  : 92, 94
    master - mean (93ms)  : 91, 94

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (630ms)  : 611, 649
    master - mean (628ms)  : 615, 642

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 (7952) - mean (195ms)  : 191, 198
    master - mean (194ms)  : 189, 200

    section Bailout
    This PR (7952) - mean (198ms)  : 195, 200
    master - mean (197ms)  : 194, 200

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (1,124ms)  : 1057, 1191
    master - mean (1,113ms)  : 1062, 1164

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 (7952) - mean (276ms)  : 271, 282
    master - mean (277ms)  : 271, 283

    section Bailout
    This PR (7952) - mean (278ms)  : 275, 282
    master - mean (277ms)  : 274, 281

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (908ms)  : 867, 948
    master - mean (907ms)  : 866, 949

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

    section Bailout
    This PR (7952) - mean (273ms)  : 266, 279
    master - mean (270ms)  : 266, 274

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (888ms)  : 848, 928
    master - mean (890ms)  : 845, 934

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

    section Bailout
    This PR (7952) - mean (271ms)  : 266, 275
    master - mean (270ms)  : 265, 275

    section CallTarget+Inlining+NGEN
    This PR (7952) - mean (829ms)  : 806, 852
    master - mean (822ms)  : 803, 842

Loading

@pr-commenter
Copy link

pr-commenter bot commented Dec 16, 2025

Benchmarks

Benchmark execution time: 2025-12-17 18:30:34

Comparing candidate commit 8667b4a in PR branch augusto/apmsp-2289.add-bp-pr-commenter with baseline commit 7c1d34f in branch master.

Found 38 performance improvements and 36 performance regressions! Performance is the same for 96 metrics, 16 unstable metrics.

scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild net472

  • 🟥 execution_time [+4.170ms; +10.582ms] or [+2.139%; +5.429%]

scenario:Benchmarks.Trace.ActivityBenchmark.StartStopWithChild net6.0

  • 🟥 throughput [-4260.058op/s; -1376.354op/s] or [-4.423%; -1.429%]
  • 🟩 execution_time [-104.998ms; -100.202ms] or [-51.812%; -49.445%]

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟩 execution_time [-3.573ms; -3.003ms] or [-1.626%; -1.367%]
  • 🟩 throughput [+8.075op/s; +9.635op/s] or [+1.386%; +1.654%]

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

  • 🟩 execution_time [-1.524ms; -1.393ms] or [-1.241%; -1.135%]
  • 🟩 throughput [+8.983op/s; +9.828op/s] or [+1.149%; +1.257%]

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

  • 🟥 execution_time [+1.330ms; +1.440ms] or [+1.214%; +1.314%]
  • 🟥 throughput [-9.468op/s; -8.756op/s] or [-1.297%; -1.199%]

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

  • 🟥 execution_time [+10.692ms; +15.890ms] or [+5.314%; +7.897%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody net472

  • 🟩 throughput [+15322.791op/s; +19306.482op/s] or [+1.575%; +1.985%]

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

  • 🟩 execution_time [-12.846ms; -8.240ms] or [-6.111%; -3.920%]
  • 🟩 throughput [+14101.226op/s; +35521.052op/s] or [+1.600%; +4.031%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.AllCycleSimpleBody netcoreapp3.1

  • 🟥 execution_time [+15.682ms; +22.070ms] or [+8.064%; +11.349%]

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

  • 🟥 execution_time [+9.166ms; +14.382ms] or [+4.590%; +7.202%]
  • 🟩 throughput [+1634.359op/s; +5742.031op/s] or [+1.080%; +3.793%]

scenario:Benchmarks.Trace.Asm.AppSecBodyBenchmark.ObjectExtractorMoreComplexBody netcoreapp3.1

  • 🟩 execution_time [-14.675ms; -10.883ms] or [-6.988%; -5.182%]
  • 🟩 throughput [+1327.927op/s; +3826.506op/s] or [+1.060%; +3.053%]

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

  • 🟥 throughput [-163318.053op/s; -68765.602op/s] or [-5.390%; -2.269%]

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

  • 🟥 execution_time [+4.616ms; +7.904ms] or [+2.383%; +4.079%]

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

  • 🟥 throughput [-249.490op/s; -223.966op/s] or [-3.578%; -3.212%]
  • 🟩 execution_time [-21.837ms; -21.135ms] or [-10.940%; -10.588%]

scenario:Benchmarks.Trace.Asm.AppSecEncoderBenchmark.EncodeLegacyArgs netcoreapp3.1

  • 🟥 throughput [-89.821op/s; -54.872op/s] or [-1.781%; -1.088%]

scenario:Benchmarks.Trace.Asm.AppSecWafBenchmark.RunWafRealisticBenchmarkWithAttack netcoreapp3.1

  • 🟥 execution_time [+39.921µs; +71.978µs] or [+12.008%; +21.651%]
  • 🟥 throughput [-464.315op/s; -278.649op/s] or [-15.413%; -9.250%]

scenario:Benchmarks.Trace.AspNetCoreBenchmark.SendRequest net472

  • 🟥 throughput [-62351229.275op/s; -61404458.676op/s] or [-31.312%; -30.837%]

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

  • 🟥 execution_time [+3.576ms; +5.484ms] or [+3.798%; +5.825%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟥 execution_time [+4.264ms; +8.335ms] or [+2.116%; +4.136%]
  • 🟩 throughput [+111.833op/s; +133.472op/s] or [+10.834%; +12.930%]

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

  • 🟥 execution_time [+21.369ms; +26.802ms] or [+12.749%; +15.990%]
  • 🟥 throughput [-211.179op/s; -164.730op/s] or [-13.822%; -10.782%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSlice net472

  • 🟩 execution_time [-106.611µs; -100.442µs] or [-5.187%; -4.887%]
  • 🟩 throughput [+25.011op/s; +26.606op/s] or [+5.141%; +5.468%]

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

  • 🟥 execution_time [+70.023µs; +76.430µs] or [+5.087%; +5.552%]
  • 🟥 throughput [-38.274op/s; -35.108op/s] or [-5.268%; -4.833%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OptimizedCharSliceWithPool net472

  • 🟩 execution_time [-55.531µs; -52.255µs] or [-4.603%; -4.332%]
  • 🟩 throughput [+37.548op/s; +39.993op/s] or [+4.530%; +4.825%]

scenario:Benchmarks.Trace.CharSliceBenchmark.OriginalCharSlice net472

  • 🟩 execution_time [-143.299µs; -136.168µs] or [-5.279%; -5.016%]
  • 🟩 throughput [+19.498op/s; +20.487op/s] or [+5.293%; +5.561%]

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

  • 🟩 execution_time [-75.468µs; -68.879µs] or [-3.812%; -3.479%]
  • 🟩 throughput [+18.227op/s; +20.006op/s] or [+3.608%; +3.960%]

scenario:Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery net472

  • 🟥 execution_time [+2.585ms; +3.903ms] or [+1.309%; +1.976%]
  • 🟥 throughput [-12324.316op/s; -9828.680op/s] or [-3.251%; -2.593%]

scenario:Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery net6.0

  • 🟥 throughput [-24140.148op/s; -14540.934op/s] or [-4.575%; -2.756%]

scenario:Benchmarks.Trace.DbCommandBenchmark.ExecuteNonQuery netcoreapp3.1

  • 🟥 throughput [-27058.004op/s; -17710.036op/s] or [-6.565%; -4.297%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch net472

  • 🟥 throughput [-15285.339op/s; -12865.875op/s] or [-5.234%; -4.405%]

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

  • 🟥 throughput [-37128.770op/s; -20384.390op/s] or [-6.114%; -3.356%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearch netcoreapp3.1

  • 🟥 execution_time [+9.528ms; +14.017ms] or [+4.913%; +7.227%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net472

  • 🟩 throughput [+11226.997op/s; +13040.508op/s] or [+3.987%; +4.631%]

scenario:Benchmarks.Trace.GraphQLBenchmark.ExecuteAsync net6.0

  • 🟩 throughput [+30899.949op/s; +42712.405op/s] or [+5.871%; +8.116%]

scenario:Benchmarks.Trace.HttpClientBenchmark.SendAsync net6.0

  • 🟥 throughput [-5511.425op/s; -2699.741op/s] or [-3.644%; -1.785%]

scenario:Benchmarks.Trace.HttpClientBenchmark.SendAsync netcoreapp3.1

  • 🟥 execution_time [+3.159ms; +5.701ms] or [+1.584%; +2.860%]
  • 🟥 throughput [-5487.530op/s; -3961.421op/s] or [-4.601%; -3.321%]

scenario:Benchmarks.Trace.ILoggerBenchmark.EnrichedLog netcoreapp3.1

  • 🟩 execution_time [-12.593ms; -7.986ms] or [-6.065%; -3.846%]
  • 🟩 throughput [+8367.028op/s; +15047.613op/s] or [+3.041%; +5.469%]

scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark net472

  • 🟩 execution_time [-2.509µs; -0.973µs] or [-4.218%; -1.635%]
  • 🟩 throughput [+286.292op/s; +725.565op/s] or [+1.702%; +4.315%]

scenario:Benchmarks.Trace.Iast.StringAspectsBenchmark.StringConcatBenchmark net6.0

  • 🟥 throughput [-2547.900op/s; -899.984op/s] or [-12.411%; -4.384%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog net472

  • 🟩 execution_time [-11.563ms; -8.972ms] or [-5.730%; -4.445%]

scenario:Benchmarks.Trace.Log4netBenchmark.EnrichedLog net6.0

  • 🟩 execution_time [-7.835ms; -6.008ms] or [-3.917%; -3.004%]

scenario:Benchmarks.Trace.NLogBenchmark.EnrichedLog net472

  • 🟥 throughput [-3606.192op/s; -3164.906op/s] or [-2.747%; -2.411%]

scenario:Benchmarks.Trace.NLogBenchmark.EnrichedLog net6.0

  • 🟥 throughput [-6869.634op/s; -2147.660op/s] or [-3.419%; -1.069%]

scenario:Benchmarks.Trace.NLogBenchmark.EnrichedLog netcoreapp3.1

  • 🟥 throughput [-4677.550op/s; -2806.082op/s] or [-3.145%; -1.887%]

scenario:Benchmarks.Trace.RedisBenchmark.SendReceive net6.0

  • 🟥 throughput [-26600.606op/s; -18087.746op/s] or [-5.104%; -3.470%]

scenario:Benchmarks.Trace.RedisBenchmark.SendReceive netcoreapp3.1

  • 🟥 execution_time [+6.700ms; +10.843ms] or [+3.368%; +5.451%]

scenario:Benchmarks.Trace.SerilogBenchmark.EnrichedLog net472

  • 🟩 throughput [+3974.470op/s; +4853.890op/s] or [+2.707%; +3.306%]

scenario:Benchmarks.Trace.SerilogBenchmark.EnrichedLog netcoreapp3.1

  • 🟩 throughput [+6237.321op/s; +8243.094op/s] or [+3.861%; +5.102%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishScope net472

  • 🟩 execution_time [-4.885ms; -2.954ms] or [-2.440%; -1.476%]

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

  • 🟩 execution_time [-8.015ms; -2.398ms] or [-4.023%; -1.204%]
  • 🟩 throughput [+20754.416op/s; +47202.791op/s] or [+2.378%; +5.408%]

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

  • 🟩 execution_time [-13.771ms; -8.009ms] or [-6.456%; -3.755%]

scenario:Benchmarks.Trace.SpanBenchmark.StartFinishTwoScopes net472

  • 🟩 throughput [+6620.576op/s; +9650.211op/s] or [+1.419%; +2.068%]

scenario:Benchmarks.Trace.TraceAnnotationsBenchmark.RunOnMethodBegin netcoreapp3.1

  • 🟩 execution_time [-13.729ms; -8.185ms] or [-6.593%; -3.931%]
  • 🟩 throughput [+10588.659op/s; +31739.700op/s] or [+1.438%; +4.310%]

@igoragoli igoragoli force-pushed the augusto/apmsp-2289.add-bp-pr-commenter branch from 76a3272 to 0750b26 Compare December 16, 2025 15:20
@igoragoli igoragoli changed the title bp pr comment Update microbenchmark after_script to enable standard BP PR comments Dec 16, 2025
@igoragoli igoragoli changed the title Update microbenchmark after_script to enable standard BP PR comments Update microbenchmarks to enable standard BP PR comments Dec 16, 2025
@igoragoli igoragoli marked this pull request as ready for review December 16, 2025 19:44
@igoragoli igoragoli requested a review from a team as a code owner December 16, 2025 19:44
Copy link
Collaborator

@bouwkast bouwkast left a comment

Choose a reason for hiding this comment

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

Thanks!


# Whether to mock benchmark execution by simply copying the latest
# master results. Useful for testing the after_script steps
BP_INFRA_TEST: "false"
Copy link
Member

Choose a reason for hiding this comment

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

Nice 👍

@igoragoli
Copy link
Contributor Author

igoragoli commented Dec 17, 2025

Thank you for the reviews! Will be merging this later, as I'm adding some updates to the PR comment itself and I'd like to see them rendered here.

@igoragoli igoragoli enabled auto-merge (squash) December 17, 2025 17:26
@igoragoli igoragoli merged commit 0e61a90 into master Dec 17, 2025
148 checks passed
@igoragoli igoragoli deleted the augusto/apmsp-2289.add-bp-pr-commenter branch December 17, 2025 19:09
@github-actions github-actions bot added this to the vNext-v3 milestone Dec 17, 2025
@andrewlock andrewlock added the area:builds project files, build scripts, pipelines, versioning, releases, packages label Dec 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:builds project files, build scripts, pipelines, versioning, releases, packages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants