WindowSystemPersistenceSimplified

(Difference between revisions)
(Less Classloading in EDT)
(Better Deserialization)
 
Line 10: Line 10:
Why six CloneableTopComponents needs to be loaded! Probably only one of them was visible. Modify the system to deserialize only visible components.
Why six CloneableTopComponents needs to be loaded! Probably only one of them was visible. Modify the system to deserialize only visible components.
-
SA: Almost all editors are deserialized to fill 'recent view list' for Ctrl+Tab switcher. Should be easily fixable.
+
SA: Every opened TC needs to be deserialized at startup.
 +
One possible trick is to deserialize only the active TC for each mode and then load the remaining TCs later on when the main window is already showing. In a dirty prototype I managed to cut window system load time to about 30%-40%
 +
The only problem is that main window content will be changing after startup...
About 4s is spend in '''XMLSettingsSupport.realSerial'''. Replacing deserialization with ''@ConvertAsProperties'' would improve the time.
About 4s is spend in '''XMLSettingsSupport.realSerial'''. Replacing deserialization with ''@ConvertAsProperties'' would improve the time.
 +
 +
SA: Maybe I'm missing something but ConvertAsProperties isn't usable for MultiviewTopComponents (i.e. all our editor implementations) as the multiview needs to (de)serialize some non-trivial stuff like Lookup provider, MultiviewDescription and other objects which the ConvertAsProperties cannot handle.
== Less Classloading in EDT ==
== Less Classloading in EDT ==

Current revision as of 15:59, 28 March 2013

Issue 227672 shows that persistence of window system is significantly slowing down the start of NetBeans IDE. According to attachment of Issue 227672:

  • It takes 9.5s to load the whole system and show main window
  • There is 4.7s between main window initialized and window system loaded messages
  • It takes more than 1.5s to show the main window.

How can the time be improved.

Better Deserialization

Why six CloneableTopComponents needs to be loaded! Probably only one of them was visible. Modify the system to deserialize only visible components.

SA: Every opened TC needs to be deserialized at startup. One possible trick is to deserialize only the active TC for each mode and then load the remaining TCs later on when the main window is already showing. In a dirty prototype I managed to cut window system load time to about 30%-40% The only problem is that main window content will be changing after startup...


About 4s is spend in XMLSettingsSupport.realSerial. Replacing deserialization with @ConvertAsProperties would improve the time.

SA: Maybe I'm missing something but ConvertAsProperties isn't usable for MultiviewTopComponents (i.e. all our editor implementations) as the multiview needs to (de)serialize some non-trivial stuff like Lookup provider, MultiviewDescription and other objects which the ConvertAsProperties cannot handle.

Less Classloading in EDT

  • editor.impl.StatusLineFactories$LineColumn.getStatusLineElement() - 335 ms
  • ProgressVisualizerProvider.getStatusLineElement() 231 ms

SA: It's probably good idea to keep the creation of visual components in EDT. But it can be rescheduled to some later moment when the main IDE window is already showing.

Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo