perf: faster datatree render performance #4337
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.
2X faster datatree render performance
I tested these changes with a tree with 251890 nodes that can be expanded. I takes ~2.5 seconds to apply one of my filters with these changes and all nodes full expanded.
Before the changes it was ~6.5 seconds with the same data.
Before
![image](https://private-user-images.githubusercontent.com/4013877/285277454-ffcf3520-cfa2-4aa6-95d2-02a4a2c4a093.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzMjc4NzYsIm5iZiI6MTcyMTMyNzU3NiwicGF0aCI6Ii80MDEzODc3LzI4NTI3NzQ1NC1mZmNmMzUyMC1jZmEyLTRhYTYtOTVkMi0wMmE0YTJjNGEwOTMucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MThUMTgzMjU2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9OTE1MTNlOGJkNGViZDQyNjRlM2IwMGQ0NDYwMmI2MjdiYTYxZTNjZjE2NDliM2I5ZDhjOTZjNDJkMDVkYjVhMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.3GEam0VksCUzIbaqAChaNRQVl_NgR0ce9OJH2uatkGU)
The filter seems to take much longer when the chrome profiler is running, the timing I stated above are more accurate when the profiler is not running
After
![image](https://private-user-images.githubusercontent.com/4013877/285279594-ebb80c87-81a8-46d4-af92-727056855a67.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjEzMjc4NzYsIm5iZiI6MTcyMTMyNzU3NiwicGF0aCI6Ii80MDEzODc3LzI4NTI3OTU5NC1lYmI4MGM4Ny04MWE4LTQ2ZDQtYWY5Mi03MjcwNTY4NTVhNjcucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDcxOCUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA3MThUMTgzMjU2WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YTM3MjIyYjFjODM0ZjIwMmZlYTMyOTliYjlhZDA2MWQ5OGI3YjFkNTZiNjUzODhjNGU4NTJmNjYxNzljN2Y1YyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.qsl5pE6LACFecR9mbxuoWadgOF4yw-6xVMxNEAoNP6k)
resolves #4336