Bug 544319

Summary: Costly bean inspection during load of application model
Product: [Eclipse Project] Platform Reporter: Karsten Thoms <karsten.thoms>
Component: UIAssignee: Platform-UI-Inbox <Platform-UI-Inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: Lars.Vogel
Version: 4.11   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:

Description Karsten Thoms CLA 2019-02-11 00:49:41 EST
I'm observing during startup that much time is spent in ModelAssembler. This seems to belong to some logic in JXPath that tries to look up bean infos. The introspection tries to find classes that don't exist, and this is tried for a lot of class loading contexts, which impacts startup performance.

The following places can be used for debugging start points:
- org.apache.commons.jxpath.JXPathIntrospector.findInformant(Class)
  Tries to find classes with suffix "XBeanInfo" for several application model element classes
- java.beans.Introspector.findCustomizerClass(Class<?>)
  Tries to find classes with suffix "Customizer" for several application model element classes

In my platform dev environment starting a runtime instance takes 11s in Introspector#findCustomizerClass.
  
By avoiding to load these non-existing classes the startup time can be improved.
Comment 1 Karsten Thoms CLA 2019-02-11 00:59:23 EST
StringModelFragmentImpl#mergeXPath() is called in this context, which does some EMF related XPath setup. The bundle providing EMF/XPath integration is org.eclipse.e4.emf.xpath. It seems that this should make already sure that bean infos for EMF classes are provided, but somehow this does not work here. I have to investigate further.
Comment 2 Lars Vogel CLA 2020-03-31 08:57:35 EDT
Karsten, are you still planning to work on this?