Skip to content

Optimize component host matching and add component-heavy benchmarks - #101

Merged
koculu merged 1 commit into
mainfrom
perf-component-renderer
Oct 18, 2026
Merged

koculu merged 1 commit into
mainfrom
perf-component-renderer

Conversation

@koculu

@koculu koculu commented Oct 18, 2026

Copy link
Copy Markdown
Member

Summary

Component discovery repeatedly builds selectors and calls Element.matches() during DOM traversal. Cache a matcher by parser context-array identity and global registry size, using tag-name lookups for plain component names and retaining selector matching for other names. Pass the matcher directly through traversal and preserve its scope while nested binding runs.

Changes

  • Add coverage for name matching, registration changes, empty registries, and parent scope restoration.
  • Add equivalent nested-component workloads to the Regor/Vue browser benchmarks, plus minidom scenarios for mounting, prop updates, and remounting.
  • Validate rendered props, classes, order, and slots outside timed sections.
  • Update benchmark mutations to use reactive element setters and array operations.
  • Refresh performance baselines for 500, 1,000, and 2,000 rows.
  • Add a benchmark TypeScript configuration with Node types.

Validation

132 relevant tests, library and benchmark type checks, lint, and benchmark builds pass. Browser output checks pass for both frameworks at 500 rows; minidom scenarios pass at 500 and 2,000 rows.

@koculu
koculu merged commit 2203462 into main Oct 18, 2026
1 check passed
@koculu
koculu deleted the perf-component-renderer branch October 18, 2026 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant