Repository navigation
Add reporting-only PR performance comparisons - #564
Merged
Merged
Conversation
Build the exact base and candidate libraries with SDK 10.0.301, then compile one shared workload definition against each. Cover Standard and Light construction, compilation, warmed invocation and compilation plus first invocation, with MemoryDiagnoser and full BDN JSON exports. Verify deterministic behavior with strict CompileFast and execute baseline/candidate then candidate/baseline on one machine. Keep the exploratory benchmark entry point unchanged.
Add read-only PR measurements on disposable runners, a default-branch-only artifact publisher, and reporting-only policy. Validate complete BDN identities/statistics across both process rounds. Resolve fork PRs through the API, bind reports to the current head, update same-head reruns, and collapse superseded comments for new commits. Never execute or extract privileged artifacts. Include policy and mocked publisher tests for missing/nonfinite measurements, two-round confidence/allocation confirmation, reporting/enforcement exit codes, malformed/foreign archives, stale runs and comment supersession. Document bootstrap, fork approvals, hosted-runner noise and the staged rollout for dadhi#64.
Keep backend dispatch and delegate casts outside the warmed batch so adapter overhead does not obscure small emitted-code regressions. Exercise both conditional branches and validate first-invocation and batched-driver checksums for every workload/backend.
Owner
|
Let merge, thank you! |
dadhi
marked this pull request as ready for review
October 25, 2026 11:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR authors currently have to repeat the manual before/after process described in #64. This adds automated performance reports for PRs targeting master, initially in reporting-only mode.
Measurements
PR comments and permissions
Benchmark jobs run with read-only repository permissions on disposable GitHub-hosted runners. A separate workflow_run publisher executes only default-branch code and treats the small report artifact as untrusted data: bounded ZIP reads without extraction, strict schema/numeric validation, and no artifact-provided scripts or prose.
The publisher resolves the PR through GitHub's API, handles empty fork-run PR associations, checks the current head/workflow/attempt, and rejects stale results. New head commits receive a new report; older bot comments are marked Outdated and collapsed with a link to the new report. Same-head reruns update their report instead of creating duplicates.
Validation
Rollout
Based directly on dadhi/master at 0f37356. For the installation PR, master has no harness yet, so a clearly labelled bootstrap uses the same candidate harness for both revisions. Later PRs use the base-branch harness. The publisher becomes active after its workflow is merged into the default branch; before then this PR can expose benchmark summaries/artifacts but cannot activate that trusted publisher.
This addresses #64's repeatable regression-comparison workflow. It does not enable required performance gates or implement the separate minimal-IL experiment discussed there. The regression README describes confidence/noise limits, the first-invocation JIT boundary, local replay, and the path to calibrated enforcement.
Generated comment preview from the first successful run
net10.0: Comparison complete (reporting only)
Base
0f37356fc9ca→ PRff47206815b2; SDK10.0.301; harnessff47206815b2(bootstrap).Bootstrap: the base does not contain this harness yet. One candidate harness was used for both revisions; later PRs use the base-branch harness.
Two opposite-order process rounds on one GitHub-hosted runner; BDN confidence intervals must be separated in both rounds to classify a >5% time regression. A ≥3% change without that evidence is a warning, not proof. Five measurement iterations/round; hosted-runner noise remains.
Compile excludes delegate invocation; CompileAndFirstInvoke includes the first call/JIT of a new delegate. Invoke is warmed; closure invocation includes creating and calling the returned delegate. MemoryDiagnoser reports managed B/op. Loop/checksum overhead is shared by both revisions.
Workflow run and complete raw artifacts