AzureStorageExplorer icon indicating copy to clipboard operation
AzureStorageExplorer copied to clipboard

Startup perf improvements

Open MRayermannMSFT opened this issue 3 years ago • 2 comments

Analyze current state of startup perf, determine if there are any places we can find improvements that we do not yet already know about.

Investigation results:

Startup perf has been steadily improving over the past year. Version 1.16.0 is about 2 seconds faster than version 1.12.0, 20% improvement.

I made some initial changes in 1.17.0 to reduce time spent in splash screen, but it's not much. At this point, there really isn't much more we can do to reduce time spent in the splash screen. At best we could probably cut that time down by no more than 0.5 seconds. In fact, our startup perf is closing in on VS Code. So at this point we have two goals:

  1. Make startup visually fast and nice enough to get rid of splash window
  2. Reduce time it takes to load initial nodes in the tree view

Recommendations to achieve those goals:

  • [x] Make loading of extensions happen in parallel with UI setup (blocked until we can control when nodes start loading, if QA nodes are dependent on an extension, then if extensions take too long to load, then, QA nodes will be broken). #3951
  • [ ] Get rid of splash window, just open main window with at least a background color matching that of the theme. Note: main window should be opened in startup earlier than it is today so the user has an indication that app is opening ASAP
  • [x] Setup dialog manager lazily. #4318
  • [x] #4618
  • [x] Setup windows jumplist/macos dock menu after UI is showed. #4327
  • [ ] Reduce number of preloaded resources.
  • [x] #4619
  • [x] Make it possible to say "cloud explorer load tree view items now", doing so will allow for loading extensions in parallel and loading resources later. #3952
  • [x] Don't do API calls for resource type nodes, have producers return resource type node AND children resource nodes if there are that type of resource. #3953
  • [x] Move providers/code which should be in main to main and make sure they are as lazily loaded as possible. E.g.: proxy, updates, dialogs.
  • [x] Setup identity stuff earlier so it loads in parallel with rest of the app #4319
  • [x] Initially create a facade of an app menu (just the File, Edit, Help, etc), and only fill them out once UI is shown
  • [ ] Target ESNext. Reduces the amount of compiled code and polyfills we ship.

MRayermannMSFT avatar Nov 06 '20 19:11 MRayermannMSFT