Skip to content

perf: reuse complex cell graphics during scrolling - #5316

Open
fangsmile wants to merge 8 commits into
developfrom
feat/issue-5308-complex-cell-scroll-performance
Open

fangsmile wants to merge 8 commits into
developfrom
feat/issue-5308-complex-cell-scroll-performance

Conversation

@fangsmile

Copy link
Copy Markdown
Contributor

Summary

  • reuse cell groups and component instances for checkbox, switch, button, and progressbar cells during eligible scrolling updates
  • reuse ProgressBar graphics by stable slots and remove stale graphics when modes or visibility change
  • retain full rebuild fallbacks for merged cells, custom layouts/renders, icons, wrapping, and auto row height
  • add issue 复杂的cell, 大数据下,表格快速滚动卡顿 #5308 performance reproduction and regression coverage

Test plan

  • Run rushx compile in packages/vtable
  • Run complex-cell, checkbox, and switch regression tests
  • Pass pre-commit ESLint, Prettier, and commitlint hooks
  • Pass pre-push package test suite (868 tests)
  • Verify component and ProgressBar graphic identity in browser runtime checks

Closes #5308

🤖 Generated with Claude Code

Reduce complex-cell reconstruction costs while preserving fallback behavior for special cells.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Keep optimized updates aligned with custom rendering and text layout semantics.
Make the performance benchmark measurements reliable.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Avoid forwarding Promise objects through asynchronous fast updates.
Verify button state changes during reuse.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Fall back from complex cell reuse when rapid hierarchy changes invalidate a cell definition.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
@github-actions github-actions Bot added the test label Sep 16, 2026
Prevent stale graphics during complex cell reuse.
Wait for scene updates before reporting performance samples.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Measure complex-cell scrolling against a same-run text control.
Gate regressions in CI without relying on external baselines.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
@github-actions github-actions Bot added the chore label Sep 17, 2026
Comment on lines +28 to +59
runs-on: ubuntu-latest
timeout-minutes: 15

steps:
- uses: actions/checkout@v4
- name: Use Node.js 18
uses: actions/setup-node@v4
with:
node-version: 18.x
cache: 'npm'
cache-dependency-path: './common/config/rush/pnpm-lock.yaml'

- name: Install dependencies
run: node common/scripts/install-run-rush.js install --bypass-policy

- name: Install Chromium
working-directory: packages/vtable
run: node node_modules/playwright/cli.js install --with-deps chromium

- name: Run scroll performance benchmark
working-directory: packages/vtable
env:
BENCHMARK_OUTPUT: benchmark-result.json
run: node ../../common/scripts/install-run-rushx.js benchmark:scroll

- name: Upload benchmark result
if: always()
uses: actions/upload-artifact@v4
with:
name: scroll-performance-result
path: packages/vtable/benchmark-result.json
if-no-files-found: ignore
Keep idle completion time as diagnostic output because it varies by runner scheduling.
Gate only metrics that distinguish the optimized and disabled fast paths.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
Show gated metrics, limits, diagnostics, and run settings directly on the Actions summary page.

Co-Authored-By: Claude Sonnet 4.6 noreply@anthropic.com
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.

复杂的cell, 大数据下,表格快速滚动卡顿

2 participants