visortelle / haskell-spotlight

VSCode extension for Haskell
https://marketplace.visualstudio.com/items?itemName=visortelle.haskell-spotlight
MIT License
108 stars 3 forks source link

Performance optimizations ⏱ #13

Open visortelle opened 2 years ago

visortelle commented 2 years ago

This issue includes only improvements that can be done without making changes in the code of the data source services.

visortelle commented 2 years ago

The problem is noticeable when there are a lot of DOM elements to render like here.

I'm typing with normal speed here:

https://user-images.githubusercontent.com/9302460/150680726-82bfb37e-b91e-4518-ae40-d73bb6c74a31.mov


Tried react-virtualized and others here. It's not trivial to integrate without code over-complication if we want to preserve the global page scroll bar.

Fixed by adding performance degradation disclaimer in https://github.com/visortelle/hackage-ui/commit/f24d9895d1c4e4ae6d0766cee488ba9e35f565e8

It should be enough for now.

Screen Shot 2022-01-25 at 3 49 38 PM
visortelle commented 2 years ago

Now it is synchronous in the scope of a single request.

Fixed here: https://github.com/visortelle/hackage-ui/commit/c86f839c35038eac4572878fa7f74e16521597aa

visortelle commented 2 years ago

While Hackage doesn't have millions of packages like NPM does, probably virtualized rendering would be enough.

https://github.com/bvaughn/react-window

Otherwise, we'd need pagination or infinite scroll.


Won't fix it for now. See https://github.com/visortelle/hackage-ui/issues/13#issuecomment-1019485957

visortelle commented 2 years ago

Probably it has the sense not directly rely on existing and implement some kind of thin APIs aggregation layer oriented for concrete UI needs.

visortelle commented 2 years ago

Now sometimes UI just get's stuck for a second or two without any indication of a continuous process.

Fixed here: https://github.com/visortelle/hackage-ui/commit/99db7912ad1ff7baed1d31cf985ae2f1f0874100