You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For big projects, we have ~ 8000 hooks on the page for multiple stores.
For the biggest store, it's around 4000 on the page.
Mount/unmount each sweet state hook do subscribe/unsubscribe operation on the store.
And implementation of this subscribe/unsubscribe has O(n) complexity, so when need to mount 4000 hooks at once it becomes very painful for UI performance.
Problematic parts highlighted in the screenshot:
Also the video with numbers:
And if we replace js array with Set time of subscribe/unsubscribe close to 0 ms and has O(1) complexity
Mount big view:
Before:
After:
Scroll in virtualized list:
Before:
After:
Unmount big view:
Before:
After:
The text was updated successfully, but these errors were encountered:
For big projects, we have ~ 8000 hooks on the page for multiple stores.
For the biggest store, it's around 4000 on the page.
Mount/unmount each sweet state hook do subscribe/unsubscribe operation on the store.
And implementation of this subscribe/unsubscribe has O(n) complexity, so when need to mount 4000 hooks at once it becomes very painful for UI performance.
Problematic parts highlighted in the screenshot:
![Screenshot 2023-05-24 at 12 29 35](https://private-user-images.githubusercontent.com/336626/240575831-be34e93b-a2a9-4ee1-9b68-ae5643c57cef.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTc1ODMxLWJlMzRlOTNiLWEyYTktNGVlMS05YjY4LWFlNTY0M2M1N2NlZi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMjFlNzdmMjRhNmFhYjhmZGIyMTliZTlmMWExY2Y3YTVhN2VjNjgxZDNhOGQ2MTZmNjFiYTQ5NmFmZTViODRkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.tBJMsv64_O4JnNKdTIf_JRA9xSzKL9qbAdK0TY5aISE)
Also the video with numbers:
And if we replace js array with
Set
time of subscribe/unsubscribe close to 0 ms and has O(1) complexityMount big view:
Before:
![Screenshot 2023-05-24 at 13 03 59](https://private-user-images.githubusercontent.com/336626/240583644-da4aa243-61b3-4749-8c7c-9e5f0cda2304.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTgzNjQ0LWRhNGFhMjQzLTYxYjMtNDc0OS04YzdjLTllNWYwY2RhMjMwNC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mYTIyZTg4ZDUwY2E0ZTUzNGU3ZGQ5N2FhODg0NjE2ZWE0ODM5MTAwMTZmNTdhZjY1NzQxZTMxMzg1ODIyZWI3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9._kKWVTTCXvRGhe-5EHSYi-yDfCK6xzEsIL7BO_veN-A)
![Screenshot 2023-05-24 at 12 59 18](https://private-user-images.githubusercontent.com/336626/240584172-abefd988-a7e4-4321-85d6-5721abcf36de.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTg0MTcyLWFiZWZkOTg4LWE3ZTQtNDMyMS04NWQ2LTU3MjFhYmNmMzZkZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03Y2IzZDUzYjM4N2RiZTQ3OWNiMzJkYTg3NjQ5ZmE4NDVhMDBkOTg1NDkyNDYyOGRhNjFlYWNjZjA5NTk2NjNmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.sXB6tdRl9BJhQ_dBD9vtBeBQIMfs3Sx3HUkvxXdzTOc)
After:
Scroll in virtualized list:
Before:
![Screenshot 2023-05-24 at 13 04 16](https://private-user-images.githubusercontent.com/336626/240584212-7415eb84-9c71-47e3-af76-bb8106509dd3.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTg0MjEyLTc0MTVlYjg0LTljNzEtNDdlMy1hZjc2LWJiODEwNjUwOWRkMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1iMDJkZThiMTkxODMxZDM3NzVlNmEwNDZhYWQ4M2M2YzUxY2JlM2U1OWNhMGI3NTIxZWIzNmQyZWE0ZDJlNjU5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.malLT3lFvioz2qyM9VSW0nY5y1Nw-8Ai8jQA4Rg0uj8)
![Screenshot 2023-05-24 at 12 59 48](https://private-user-images.githubusercontent.com/336626/240584243-3abfcf5c-95a0-4cec-bf5e-c4e78fba0f99.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTg0MjQzLTNhYmZjZjVjLTk1YTAtNGNlYy1iZjVlLWM0ZTc4ZmJhMGY5OS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02M2NmZTU0MGM1YWRmOTFlYjAyZGIzYzExMjIzM2U3MDI1MWEzMzY5YzA5MmJjYTcyY2Y4YjI1ZWYyOTA3YzFmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.MDYjYo1YotRezT783w6hoslcaG0nqhQ0WTvN8RYqlRM)
After:
Unmount big view:
Before:
![Screenshot 2023-05-24 at 13 04 33](https://private-user-images.githubusercontent.com/336626/240584356-472a3ca1-2ae3-4090-9050-6779c8a897fb.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTg0MzU2LTQ3MmEzY2ExLTJhZTMtNDA5MC05MDUwLTY3NzljOGE4OTdmYi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lYjZjODg2ZTlhNDM4ZmQzNTc0OWUxNTUxODZhYmJjYmE4NzAyYmFmYjAzZDRmYWY2MGIwMmI5OWIwN2ZkMWFhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.ziWZn7vBoKtuWWdvAr8GI_jeHhhDHHKcfqg52W7hc3c)
![Screenshot 2023-05-24 at 13 00 08](https://private-user-images.githubusercontent.com/336626/240584432-830689ea-426f-4bf4-8772-1a97feddc4e2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjE0NDMwMzgsIm5iZiI6MTcyMTQ0MjczOCwicGF0aCI6Ii8zMzY2MjYvMjQwNTg0NDMyLTgzMDY4OWVhLTQyNmYtNGJmNC04NzcyLTFhOTdmZWRkYzRlMi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNzIwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDcyMFQwMjMyMThaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03NjBjOWQ4MWZlZjUwMDczZmRiYjZiMDEzZmIxYWE3YWE2YTdlYzAyNmNhNjM0MDMyNmRkZGVhNTRlMDczMWY1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.IP2a9z5ObepZQLplL0J7z6fJcEbyKQ7Mk_peSFEHn_E)
After:
The text was updated successfully, but these errors were encountered: