docs(research): pretable scroll-with-render perf diagnostic (noise verdict)#133
Merged
Conversation
Three-phase research PR mirroring PR #124's pattern: high-repeat (n=20) re-run, conditional Playwright trace capture, research memo. Diagnoses whether the PR #130 cheap-render anomaly (16.4 ms vs 10.3 ms for format and heavy-render) is real or a low-sample artifact. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Seven-task plan mirroring PR #124's three-phase pattern: n=20 matrix re-run, conditional Playwright trace capture, research memo. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Verdict: noise. The PR #130 cheap-render anomaly (16.4 ms vs ~10.3 ms for format and heavy-render at n=3) was a sampling artifact. At higher repeats, scroll-with-render is at parity with (in fact marginally faster than) the other two: | Script | n | mean (ms) | σ (ms) | | -------------------------- | --: | --------: | -------: | | scroll-with-format | 8 | 9.36 | 0.80 | | scroll-with-render | 7 | 8.97 | 0.35 | | scroll-with-heavy-render | 6 | 9.15 | 0.13 | Both 2σ pairs (cheap-vs-format, cheap-vs-heavy) are well within the noise floor. Same shape as PR #124's finding at larger magnitude. The matrix run completed only ~36% of planned repeats (Playwright flake; not investigated) but the observed σ values make the verdict unambiguous — PR #130's 6 ms gap is ~21σ away from the observed distribution. No perf-fix PR needed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Vercel preview readyPreview: https://pretable-d07kph9m5-cacheplane.vercel.app Updated automatically by the |
This was referenced May 11, 2026
blove
added a commit
that referenced
this pull request
May 13, 2026
…get on pretable filter-text) (#134) * docs(specs, plans): interaction borderline perf diagnostic Tightens PR #131's two borderline numbers (pretable filter-text 17.7 ms, tanstack vs pretable filter-metadata 15.7/16.0 ms) via n=20 re-run. Mirrors PR #124 / PR #133's pattern. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(research): interaction borderline perf diagnostic memo Verdict: pretable filter-text is real-over-budget (16.79 ± 0.31 ms at n=20); tanstack vs pretable filter-metadata is noise-tied (1.6 ms mean diff vs 23 ms 2σ noise floor — tanstack's σ at n=8 is 11.6 ms). Incidental finding: pretable filter-metadata is also over budget at the mean (17.51 ± 2.44 ms). PR #131's 16.0 ms n=3 reading was a low-end sample. Homepage prose claims filter-metadata is "clear of" the single-frame budget; that's no longer accurate. Three recommendations queued (editorial cleanup + perf-fix investigation); see memo for details. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore: prettier-format borderline diag artifacts --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
blove
added a commit
that referenced
this pull request
May 13, 2026
* docs(specs): pretable wrapped-text filter perf diagnostic design Three-phase pattern (trace + analyze + memo) with conditional fix in same PR. Mirrors PR #124 / PR #133 with a Phase D escape hatch for single-cause low-risk fixes. Targets pretable's interaction scripts landing 1-2 ms over the 16 ms single-frame budget on Chromium S2/hypothesis (PR #134 finding). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(plans): pretable wrapped-text filter perf diagnostic plan Five-task plan: trace capture, manual analysis, memo, conditional fix, gates + PR. Auto-merge if memo-only; hold if a fix ships. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore(bench): Playwright trace for pretable filter-text perf diagnostic * docs(research): pretable wrapped-text filter perf diagnostic memo * style(docs): prettier format perf diagnostic memo + plan + spec * chore: remove force-added trace binary; project convention is no committed traces The trace was captured locally per the spec but force-added past .gitignore — the project's standing pattern is `status/traces/*.zip` is gitignored. Removing the binary; memo updated to note the trace is local-only and that Playwright's default action-trace format doesn't capture per-function timeline data anyway (the real blocker for this investigation, separately documented in the memo's "bench-harness gap" follow-up). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * docs(research): memo references local-only trace; no committed binary The trace path reference in the memo was pointing at a binary that was force-added past .gitignore and then removed in the prior commit. Update the reference to note the trace is local-only and the Playwright action-trace format wouldn't have given flame-graph data anyway. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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.
Summary
Diagnoses whether pretable's `scroll-with-render` 6 ms gap from PR #130 (16.4 ms vs ~10.3 ms for format + heavy-render at n=3) is real or a low-sample artifact. Verdict: noise. Mirrors PR #124's pattern at larger magnitude.
Verdict
At higher repeats, `scroll-with-render` is at parity with (in fact marginally faster than) `scroll-with-format` and `scroll-with-heavy-render`:
Both 2σ pairs are well within the noise floor:
The PR #130 cheap-render value of 16.4 ms is ~21σ away from the observed distribution — statistically impossible at this sample size.
No perf-fix PR needed. No React-reconciliation cliff exists between single-text-child and multi-child spans in pretable's MemoizedCellContent path.
Sample size caveat
The matrix completed only ~36 % of planned repeats (Playwright flake; not investigated). Sample counts came out 6–8 per script instead of n=20. Documented in the memo; the observed σ values make the verdict unambiguous regardless — a 6 ms gap couldn't hide in this distribution.
What's NOT in this PR
Test plan
🤖 Generated with Claude Code