Skip to content

Conversation

@vasylenkoval
Copy link
Contributor

@vasylenkoval vasylenkoval commented Aug 18, 2025

Hey @krausest, big fan of this repo, thank you for all of your hard work!

I wanted to submit a small PR to bump all of the Preact implementations to 10.27.1 because the latest release has a small fix related to re-ordering of memoized rows.

It should remove majority of swap-rows cost in preact-classes and preact-kr-observable, since these are using memozied rows and were affected by the edge case that was fixed.

Other implementations, preact-hooks and preact-signals, do not use memoized rows and currently have faster swap performance (before this release), but end up having to eat the cost of not being able to skip processing rows in select-row and partial-update.

Screenshot 2025-08-18 at 7 28 51 PM

I am guessing that the reason why hooks and signals implementations do not use memoized rows is because of the said swap deopt that was fixed. So I was also planning on submitting another PR to update preact-hooks and preact-signals to use memoization. Please let me know if you'd rather have it all in one PR, I can also push it here later.

@krausest
Copy link
Owner

Thanks - I'm on holidays so it'll be September when I merge it.

@vasylenkoval vasylenkoval mentioned this pull request Aug 20, 2025
@krausest krausest merged commit 1a72713 into krausest:master Aug 31, 2025
@krausest
Copy link
Owner

Here's the diff for the incremental run (left new keyed results, right old keyed results). Please note that vanillajs was a bit slower than in the last full run.
Screenshot 2025-08-31 at 21 32 54
For preact signals there's PR #1917 which I'll merge next. We first should take a look at those results...
Feel free to submit a PR experimenting with memoization...

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.

2 participants