Repository navigation
Conversation
Collaborator
|
Thanks, I'll take a look soon! |
Author
|
@coolsoftwaretyler thanks a lot! Maybe will send couple more PR to mst or mobx. Still investigating |
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.
Hey, we hit performance issues is Polotno studio (design editor). Grouping elements detaches each one and moves it into the new group. With 600 elements on a page, long time was
splitCache, and it grows with every page in the document.detach()callsIdentifierCache.splitCache, which loops over every identifier in the tree and builds each node'spathto find the detached subtree. So one detach costs O(tree size), and moving N nodes costs O(N × tree size).The fix walks only the detached subtree and reuses
notifyDiedto remove each node from the old cache.The new test in
identifier.test.tsdetaches 1 of 1000 items. Before the fix that readpath1001 times. It also checks that identifiers still resolve, including one nested in the detached item.