-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
perf(editor): 2.3x* faster #276
Merged
Merged
Conversation
This file contains 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
- Move all canvas events to useCanvasEvents - DropZone funtionality to useCanvasrDropZone - All utilities to useCanvasrUtils
- to significantly redunce the number of events - and for better scalability
- For faster load and low memory consumption
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #276 +/- ##
========================================
Coverage 41.94% 41.94%
========================================
Files 15 15
Lines 906 906
========================================
Hits 380 380
Misses 526 526 ☔ View full report in Codecov by Sentry. |
- If user is logged in and does not have access to builder, redirct to app - if user is not logged in redirect to login. Once user logs in redirect back to builder page.
- Command click to only show clicked breakpoint
Reduces the load on first render and makes it extremely fast while navigating using arrow keys
🎉 This PR is included in version 1.13.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Initial load
(on fairly large page with some components)
Before:
After:
Note: Further optimizing for initial load scripting overhead somehow degrades the UX. Might take a look at it again later once I have the better approach to solve it.
Summary:
Following strategies were used to achieve this:
findBlock
which highly impacts time required for scripting during initial load)markRaw
where reactivity is not needed (affects scripting overhead) (yet to properly test all scenarios)Other performance benefits:
Due to event delegation
- Builder can scale better as more blocks are added to the page. (i.e. number of listeners will roughly be consistent irrespective of the size of the page)
- Toggling of other displays (breakpoints) are much snappier as there is very less overhead of attaching events per block. Also, now the breakpoint toggle does not re-render if it is already rendered once (thanks to lazy-show strategy)
- Faster undo/redo
UX Fixes: