Repository navigation
Combine per-element reactive bindings into single effects - #820
Open
wouterlucas wants to merge 1 commit into
Open
wouterlucas wants to merge 1 commit into
wouterlucas wants to merge 1 commit into
Conversation
Benchmark comparison
Negative means faster. Informational results; small changes can be measurement noise. Head: |
This branch has not been deployed
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.
Stacked on #819. Groups each element's reactive bindings (:props, content interpolation) into one codegen effect entry instead of one per binding, cutting registered effects from #bindings to #dynamic-elements.
What changed:
src/lib/codegenerator/generator.js:generateElementCodeand the prop loop ingenerateComponentCodebuffer statements and flush one combined entry via a newflushElementEffectshelper.:forsafety: buffered statements are split by the existing scope regex, so iteration-only bindings merge into one inner per-item effect while outer-scope bindings stay in the outer loop wrapper (no O(n) regression for mixed bindings).Tests: updated 4 goldens (2->1, 3->1, 2->1, 2->1); multi-element cases unchanged (Poster stays at 4). New codegen test pins inner/outer split-and-merge in loops; new renderComponent tests pin effect counts (3 bindings -> 2 effects) and mixed loop updates. Full suite 1550/1550, eslint clean.