Optimize large list performance #250
Merged
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.
Optimized rendering of a large list of nodes.
The problem was that with checking any node of the tree, all nodes were re-rendered, even if they did not change.
The solution to this problem is quite simple: make the node component a pure one and make sure that the props of this component are not re-created on every rendering.
Impact on performance.
Measured on a tree of 2100 visible nodes. OS: Windows 10 x64 with Ryzen 5 2600 3.40 GHz
Before
620-650 ms

After
160-180 ms
