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.
Description & motivation
In FE2 when clicking on any of the items highlighted in the image below
Which would make all the objects of the selected type to become 'selected', for a large number of objects the main thread would get blocked for tens of seconds.
60% of the execution time was taken up by using
findAll
when going over very many string ids, to get the tree node from the viewer. In API 2.0, this is no longer needed. Instead you usefindId
which is incomparably faster since it's just one or two lookups. After making this change, the viewer overhead was completely gone. However there is still some FE2 related overhead, accounting for approx 30% of the total inital overhead.I'm leaving two profiler recordings, one before the change, one after the change. The FE2 related overhead is visible in both, and it seems to be the same one mentioned here
Changes:
findAll
when trying to match object ids. Replaced withfindId
To-do before merge:
Screenshots:
Before:
After:
Validation of changes:
Checklist:
References