Skip to content

[Test Optimization] Improve GitHub Actions @ci.job.url format#8098

Merged
tonyredondo merged 10 commits intomasterfrom
tony/cijoburl-format
Feb 4, 2026
Merged

[Test Optimization] Improve GitHub Actions @ci.job.url format#8098
tonyredondo merged 10 commits intomasterfrom
tony/cijoburl-format

Conversation

@tonyredondo
Copy link
Member

@tonyredondo tonyredondo commented Jan 23, 2026

Summary of changes

Fixes the @ci.job.url tag to construct proper job-specific URLs that navigate directly to the job logs instead of the commit checks page.

JIRA: SDTEST-3001

Core changes:

  • Add JOB_CHECK_RUN_ID environment variable support for explicit job ID configuration
  • Implement diagnostics file parsing to extract numeric job ID from Worker_*.log files
  • Use dual extraction strategy: JSON parse with regex fallback for robustness
  • Construct correct URL format: {repo}/actions/runs/{run_id}/job/{job_id}

Reason for change

The current @ci.job.url format points to the commit checks page (/commit/{sha}/checks) rather than the specific job. This makes it difficult for users to navigate directly to the relevant job logs when investigating test failures or CI issues.

GitHub Actions jobs have two identifiers:

  • String identifier (GITHUB_JOB): Human-readable job name from workflow YAML
  • Numeric identifier (job.check_run_id): The actual ID used in URLs for direct job navigation

The correct URL format {repo}/actions/runs/{run_id}/job/{job_id} requires the numeric job ID, which is not exposed as an environment variable by default.

Implementation details

Priority order for job ID resolution:

  1. JOB_CHECK_RUN_ID environment variable - Users can set this via ${{ job.check_run_id }} in their workflow
  2. GitHub Actions runner diagnostics files (_diag/Worker_*.log) - Automatic extraction when env var not set
  3. Fallback to GITHUB_JOB with commit checks URL (existing behavior)

Diagnostics file extraction:

  • Searches well-known diagnostic directory locations for each platform (Linux, macOS, Windows)
  • Looks for Worker_*.log files sorted by modification time (newest first)
  • Uses dual extraction strategy:
    • JSON parse: Handles well-formed JSON files with structure { "job": { "d": [ { "k": "check_run_id", "v": 55411116365 } ] } }
    • Regex fallback: Handles log files with embedded JSON fragments

Defensive measures:

  • 10MB file size limit to avoid memory issues with unexpected large files
  • Graceful error handling with debug logging
  • Platform-specific diagnostic directory detection

Test coverage

Unit tests (CIEnvironmentVariableTests.cs):

  • GithubJobIdFromEnvironmentVariableTest - Tests job ID from JOB_CHECK_RUN_ID env var
  • GithubJobIdFallbackTest - Tests fallback to commit checks URL when no numeric ID available
  • GithubDiagnosticsFileExtractionTest - Tests JSON extraction via reflection
  • GithubDiagnosticsFileSizeLimitTest - Tests 10MB file size limit enforcement
  • GithubDiagnosticsFileRegexFallbackTest - Tests regex fallback extraction

Data-driven tests (github.json):

  • Added test cases for JOB_CHECK_RUN_ID with both GitHub.com and GitHub Enterprise Server

Other details

Users can enable the improved URL format by adding this to their workflow:

env:
  JOB_CHECK_RUN_ID: ${{ job.check_run_id }}

If not set, the tracer will attempt to extract the job ID from runner diagnostics files automatically.

…navigation

Fixes the `@ci.job.url` tag to construct proper job-specific URLs that navigate
directly to the job logs instead of the commit checks page.

Core changes:
- Add `JOB_CHECK_RUN_ID` environment variable support for explicit job ID
- Implement diagnostics file parsing to extract numeric job ID from Worker_*.log
- Use dual extraction strategy: JSON parse with regex fallback for robustness
- Construct correct URL format: `{repo}/actions/runs/{run_id}/job/{job_id}`

Priority order for job ID resolution:
1. `JOB_CHECK_RUN_ID` environment variable (set via `${{ job.check_run_id }}`)
2. GitHub Actions runner diagnostics files (`_diag/Worker_*.log`)
3. Fallback to `GITHUB_JOB` with commit checks URL (existing behavior)

Defensive measures:
- 10MB file size limit for diagnostics files
- Graceful error handling with debug logging
- Platform-specific diagnostic directory detection (Linux, macOS, Windows)
@pr-commenter
Copy link

pr-commenter bot commented Jan 23, 2026

Benchmarks

Benchmark execution time: 2026-02-04 11:42:38

Comparing candidate commit fae7606 in PR branch tony/cijoburl-format with baseline commit 723078c in branch master.

Found 7 performance improvements and 7 performance regressions! Performance is the same for 160 metrics, 18 unstable metrics.

scenario:Benchmarks.Trace.AgentWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟥 execution_time [+17.967ms; +18.843ms] or [+9.015%; +9.455%]

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

  • 🟩 execution_time [-31.211ms; -24.623ms] or [-13.909%; -10.973%]

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

  • 🟩 execution_time [-28.420ms; -28.016ms] or [-13.911%; -13.713%]

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

  • 🟥 execution_time [+22.851µs; +61.922µs] or [+5.132%; +13.908%]

scenario:Benchmarks.Trace.CIVisibilityProtocolWriterBenchmark.WriteAndFlushEnrichedTraces net472

  • 🟥 execution_time [+20.636ms; +24.517ms] or [+10.994%; +13.061%]

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

  • 🟥 execution_time [+20.803ms; +24.978ms] or [+13.212%; +15.863%]

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

  • 🟩 execution_time [-112.676µs; -104.697µs] or [-9.644%; -8.961%]
  • 🟩 throughput [+84.655op/s; +90.921op/s] or [+9.890%; +10.622%]

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

  • 🟥 throughput [-28740.944op/s; -21123.310op/s] or [-7.423%; -5.456%]

scenario:Benchmarks.Trace.ElasticsearchBenchmark.CallElasticsearchAsync net472

  • 🟩 throughput [+14312.463op/s; +15078.067op/s] or [+5.112%; +5.386%]

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

  • 🟩 execution_time [-18.762ms; -12.988ms] or [-8.869%; -6.140%]

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

  • 🟩 execution_time [-28.232ms; -25.847ms] or [-14.028%; -12.843%]

scenario:Benchmarks.Trace.SingleSpanAspNetCoreBenchmark.SingleSpanAspNetCore net6.0

  • 🟥 execution_time [+42.271ms; +43.542ms] or [+44.349%; +45.682%]

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

  • 🟥 execution_time [+13.040ms; +15.559ms] or [+6.600%; +7.875%]

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

dd-trace-dotnet-ci-bot bot commented Jan 23, 2026

Execution-Time Benchmarks Report ⏱️

Execution-time results for samples comparing This PR (8098) 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.31 ± (79.13 - 79.51) ms80.42 ± (80.33 - 80.66) ms+1.4%✅⬆️
.NET Framework 4.8 - Bailout
duration84.40 ± (84.33 - 84.70) ms84.23 ± (84.12 - 84.53) ms-0.2%
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1121.11 ± (1118.66 - 1126.25) ms1124.60 ± (1124.41 - 1131.31) ms+0.3%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms24.30 ± (24.23 - 24.36) ms25.27 ± (25.21 - 25.33) ms+4.0%✅⬆️
process.time_to_main_ms94.22 ± (94.02 - 94.42) ms103.98 ± (103.75 - 104.21) ms+10.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.94 ± (10.93 - 10.94) MB15.51 ± (15.50 - 15.51) MB+41.8%✅⬆️
runtime.dotnet.threads.count12 ± (12 - 12)12 ± (12 - 12)+0.0%
.NET Core 3.1 - Bailout
process.internal_duration_ms24.07 ± (24.01 - 24.13) ms24.99 ± (24.93 - 25.06) ms+3.8%✅⬆️
process.time_to_main_ms94.28 ± (94.04 - 94.52) ms105.46 ± (105.24 - 105.68) ms+11.9%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.97 ± (10.97 - 10.97) MB15.55 ± (15.54 - 15.55) MB+41.7%✅⬆️
runtime.dotnet.threads.count13 ± (13 - 13)13 ± (13 - 13)+0.0%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms230.48 ± (227.83 - 233.13) ms294.64 ± (292.29 - 297.00) ms+27.8%✅⬆️
process.time_to_main_ms535.49 ± (534.59 - 536.39) ms570.47 ± (569.60 - 571.34) ms+6.5%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed48.57 ± (48.55 - 48.60) MB53.08 ± (53.06 - 53.10) MB+9.3%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)+1.2%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms22.79 ± (22.75 - 22.84) ms23.15 ± (23.09 - 23.22) ms+1.6%✅⬆️
process.time_to_main_ms81.11 ± (80.93 - 81.29) ms82.54 ± (82.36 - 82.73) ms+1.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.64 ± (10.64 - 10.64) MB10.67 ± (10.67 - 10.67) MB+0.3%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 6 - Bailout
process.internal_duration_ms22.70 ± (22.65 - 22.76) ms22.87 ± (22.80 - 22.94) ms+0.7%✅⬆️
process.time_to_main_ms82.45 ± (82.32 - 82.58) ms82.51 ± (82.32 - 82.70) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed10.72 ± (10.72 - 10.73) MB10.77 ± (10.77 - 10.77) MB+0.4%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms234.06 ± (229.89 - 238.23) ms231.17 ± (227.56 - 234.78) ms-1.2%
process.time_to_main_ms507.09 ± (506.08 - 508.09) ms514.10 ± (513.25 - 514.95) ms+1.4%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed49.17 ± (49.15 - 49.20) MB49.28 ± (49.26 - 49.30) MB+0.2%✅⬆️
runtime.dotnet.threads.count28 ± (28 - 28)28 ± (28 - 28)-0.2%
.NET 8 - Baseline
process.internal_duration_ms20.51 ± (20.47 - 20.55) ms21.45 ± (21.39 - 21.51) ms+4.6%✅⬆️
process.time_to_main_ms78.03 ± (77.84 - 78.23) ms87.17 ± (86.96 - 87.38) ms+11.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.68 ± (7.68 - 7.69) MB12.25 ± (12.24 - 12.26) MB+59.4%✅⬆️
runtime.dotnet.threads.count10 ± (10 - 10)10 ± (10 - 10)+0.0%
.NET 8 - Bailout
process.internal_duration_ms20.47 ± (20.42 - 20.52) ms21.69 ± (21.63 - 21.75) ms+6.0%✅⬆️
process.time_to_main_ms79.01 ± (78.80 - 79.22) ms90.61 ± (90.42 - 90.80) ms+14.7%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed7.74 ± (7.73 - 7.75) MB12.31 ± (12.30 - 12.32) MB+59.0%✅⬆️
runtime.dotnet.threads.count11 ± (11 - 11)11 ± (11 - 11)+0.0%
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms196.85 ± (196.07 - 197.62) ms205.53 ± (204.57 - 206.50) ms+4.4%✅⬆️
process.time_to_main_ms484.07 ± (483.12 - 485.03) ms517.08 ± (515.96 - 518.19) ms+6.8%✅⬆️
runtime.dotnet.exceptions.count0 ± (0 - 0)0 ± (0 - 0)+0.0%
runtime.dotnet.mem.committed37.02 ± (36.98 - 37.05) MB41.67 ± (41.64 - 41.71) MB+12.6%✅⬆️
runtime.dotnet.threads.count27 ± (27 - 27)27 ± (27 - 27)+0.2%✅⬆️

HttpMessageHandler

Metric Master (Mean ± 95% CI) Current (Mean ± 95% CI) Change Status
.NET Framework 4.8 - Baseline
duration203.83 ± (203.44 - 204.53) ms205.63 ± (205.38 - 206.74) ms+0.9%✅⬆️
.NET Framework 4.8 - Bailout
duration206.62 ± (206.50 - 207.47) ms210.52 ± (210.13 - 211.32) ms+1.9%✅⬆️
.NET Framework 4.8 - CallTarget+Inlining+NGEN
duration1188.00 ± (1187.93 - 1194.72) ms1188.42 ± (1186.54 - 1195.17) ms+0.0%✅⬆️
.NET Core 3.1 - Baseline
process.internal_duration_ms199.68 ± (199.16 - 200.20) ms200.19 ± (199.56 - 200.81) ms+0.3%✅⬆️
process.time_to_main_ms86.45 ± (86.20 - 86.70) ms86.63 ± (86.35 - 86.90) ms+0.2%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.09 ± (16.07 - 16.10) MB16.11 ± (16.09 - 16.12) MB+0.1%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)-0.3%
.NET Core 3.1 - Bailout
process.internal_duration_ms198.70 ± (198.19 - 199.22) ms199.44 ± (198.96 - 199.92) ms+0.4%✅⬆️
process.time_to_main_ms87.86 ± (87.59 - 88.14) ms87.68 ± (87.43 - 87.93) ms-0.2%
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed16.17 ± (16.15 - 16.18) MB16.11 ± (16.09 - 16.12) MB-0.4%
runtime.dotnet.threads.count21 ± (21 - 21)21 ± (21 - 21)-0.8%
.NET Core 3.1 - CallTarget+Inlining+NGEN
process.internal_duration_ms424.41 ± (420.95 - 427.87) ms433.39 ± (429.71 - 437.07) ms+2.1%✅⬆️
process.time_to_main_ms504.42 ± (503.42 - 505.43) ms505.00 ± (503.98 - 506.03) ms+0.1%✅⬆️
runtime.dotnet.exceptions.count3 ± (3 - 3)3 ± (3 - 3)+0.0%
runtime.dotnet.mem.committed59.27 ± (59.17 - 59.38) MB59.22 ± (59.11 - 59.33) MB-0.1%
runtime.dotnet.threads.count29 ± (29 - 30)30 ± (29 - 30)+0.1%✅⬆️
.NET 6 - Baseline
process.internal_duration_ms205.14 ± (204.55 - 205.74) ms208.21 ± (207.64 - 208.77) ms+1.5%✅⬆️
process.time_to_main_ms75.66 ± (75.43 - 75.90) ms80.99 ± (80.76 - 81.22) ms+7.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.29 ± (16.27 - 16.31) MB20.81 ± (20.79 - 20.83) MB+27.7%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)20 ± (20 - 20)+2.1%✅⬆️
.NET 6 - Bailout
process.internal_duration_ms207.27 ± (206.73 - 207.81) ms210.26 ± (209.58 - 210.94) ms+1.4%✅⬆️
process.time_to_main_ms77.70 ± (77.48 - 77.91) ms83.38 ± (83.14 - 83.62) ms+7.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed16.34 ± (16.32 - 16.36) MB20.87 ± (20.85 - 20.89) MB+27.7%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)21 ± (21 - 21)+1.2%✅⬆️
.NET 6 - CallTarget+Inlining+NGEN
process.internal_duration_ms449.99 ± (445.76 - 454.23) ms478.54 ± (476.29 - 480.80) ms+6.3%✅⬆️
process.time_to_main_ms486.90 ± (485.85 - 487.96) ms506.26 ± (505.21 - 507.31) ms+4.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed59.30 ± (59.12 - 59.48) MB62.75 ± (62.65 - 62.86) MB+5.8%✅⬆️
runtime.dotnet.threads.count30 ± (30 - 30)30 ± (30 - 30)+1.2%✅⬆️
.NET 8 - Baseline
process.internal_duration_ms204.67 ± (204.16 - 205.18) ms205.25 ± (204.63 - 205.87) ms+0.3%✅⬆️
process.time_to_main_ms74.84 ± (74.63 - 75.04) ms80.05 ± (79.83 - 80.27) ms+7.0%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.65 ± (11.63 - 11.66) MB16.18 ± (16.17 - 16.20) MB+39.0%✅⬆️
runtime.dotnet.threads.count19 ± (19 - 19)19 ± (19 - 19)+2.1%✅⬆️
.NET 8 - Bailout
process.internal_duration_ms204.92 ± (204.36 - 205.49) ms204.09 ± (203.53 - 204.65) ms-0.4%
process.time_to_main_ms76.42 ± (76.22 - 76.63) ms81.49 ± (81.28 - 81.70) ms+6.6%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed11.68 ± (11.67 - 11.69) MB16.27 ± (16.25 - 16.28) MB+39.2%✅⬆️
runtime.dotnet.threads.count20 ± (20 - 20)20 ± (20 - 20)+1.9%✅⬆️
.NET 8 - CallTarget+Inlining+NGEN
process.internal_duration_ms471.39 ± (464.37 - 478.40) ms448.50 ± (440.89 - 456.11) ms-4.9%
process.time_to_main_ms481.53 ± (480.09 - 482.96) ms492.64 ± (491.83 - 493.45) ms+2.3%✅⬆️
runtime.dotnet.exceptions.count4 ± (4 - 4)4 ± (4 - 4)+0.0%
runtime.dotnet.mem.committed50.53 ± (50.49 - 50.57) MB54.75 ± (54.61 - 54.89) MB+8.4%✅⬆️
runtime.dotnet.threads.count29 ± (29 - 29)29 ± (29 - 29)+1.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 (8098) - mean (80ms)  : 78, 83
    master - mean (79ms)  : 77, 82

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

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (1,128ms)  : 1076, 1179
    master - mean (1,122ms)  : 1067, 1178

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 (8098) - mean (137ms)  : 133, 142
    master - mean (126ms)  : 123, 129

    section Bailout
    This PR (8098) - mean (139ms)  : crit, 136, 141
    master - mean (126ms)  : 122, 130

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (903ms)  : crit, 862, 944
    master - mean (808ms)  : 755, 860

Loading
FakeDbCommand (.NET 6)
gantt
    title Execution time (ms) FakeDbCommand (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8098) - mean (113ms)  : 109, 117
    master - mean (111ms)  : 108, 114

    section Bailout
    This PR (8098) - mean (112ms)  : 110, 115
    master - mean (112ms)  : 110, 114

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (789ms)  : 735, 843
    master - mean (784ms)  : 717, 851

Loading
FakeDbCommand (.NET 8)
gantt
    title Execution time (ms) FakeDbCommand (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8098) - mean (117ms)  : 114, 121
    master - mean (107ms)  : 103, 111

    section Bailout
    This PR (8098) - mean (121ms)  : crit, 119, 124
    master - mean (108ms)  : 105, 111

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (767ms)  : crit, 746, 789
    master - mean (723ms)  : 698, 749

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 (8098) - mean (206ms)  : 196, 217
    master - mean (204ms)  : 196, 212

    section Bailout
    This PR (8098) - mean (211ms)  : 202, 219
    master - mean (207ms)  : 200, 213

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (1,191ms)  : 1126, 1256
    master - mean (1,191ms)  : 1143, 1239

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 (8098) - mean (297ms)  : 282, 311
    master - mean (296ms)  : 283, 309

    section Bailout
    This PR (8098) - mean (297ms)  : 285, 309
    master - mean (296ms)  : 288, 305

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (979ms)  : 921, 1037
    master - mean (972ms)  : 910, 1033

Loading
HttpMessageHandler (.NET 6)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 6)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8098) - mean (299ms)  : 289, 309
    master - mean (290ms)  : 276, 304

    section Bailout
    This PR (8098) - mean (303ms)  : 290, 316
    master - mean (294ms)  : 284, 305

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (1,020ms)  : 970, 1069
    master - mean (979ms)  : 906, 1053

Loading
HttpMessageHandler (.NET 8)
gantt
    title Execution time (ms) HttpMessageHandler (.NET 8)
    dateFormat  x
    axisFormat %Q
    todayMarker off
    section Baseline
    This PR (8098) - mean (296ms)  : 285, 308
    master - mean (291ms)  : 281, 300

    section Bailout
    This PR (8098) - mean (297ms)  : 286, 307
    master - mean (292ms)  : 281, 302

    section CallTarget+Inlining+NGEN
    This PR (8098) - mean (977ms)  : 866, 1087
    master - mean (993ms)  : 877, 1108

Loading

Copy link
Member

@andrewlock andrewlock left a comment

Choose a reason for hiding this comment

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

LGTM, apart from a bunch of nits

@tonyredondo tonyredondo merged commit 7eb288c into master Feb 4, 2026
140 of 141 checks passed
@tonyredondo tonyredondo deleted the tony/cijoburl-format branch February 4, 2026 13:16
@github-actions github-actions bot added this to the vNext-v3 milestone Feb 4, 2026
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.

3 participants