Closed ghiscoding closed 2 months ago
Run & review this pull request in StackBlitz Codeflow.
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 99.8%. Comparing base (
beae104
) to head (62d342a
). Report is 9 commits behind head on master.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Another perf optimization that is probably O(n square) if not more.
When collapsing/expanding items in the grid, we also need to update the hierarchical (tree) dataset and the previous code was searching for the item in the tree and then was toggling its collapse prop. When we have a single item that we collapse, searching in the tree is relatively quick, but when we toggle thousand of items and we search them one-by-one then this becomes extremely costly to execute (search+toggle for every row). What we can do to decrease the time is to keep doing the toggle of the collapse prop on the flat array BUT instead of searching each item in the tree, we can simply recreate the hierarchical (tree) only once and we're done (40x decrease as shown below).
Perf logs for Example 5 with 25k items
Before (expand all, collapse all)
tree collapse/expand: 2572.123779296875 ms tree collapse/expand: 2432.596923828125 ms
After (expand all, collapse all)
tree collapse/expand: 65.237060546875 ms tree collapse/expand: 57.0859375 ms