Community
Participate
Working Groups
I've started to check where the possible performance issues can be with 4.x, and the first thing I saw was the HUGE amount (~4000) of XmlEntityScanner$1 and same amount (~4000) of ClassNotFoundExceptions exceptions thrown just by navigating between editors. Entry points: com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(int, boolean, boolean) XMLEntityScanner.java:1767 com.sun.org.apache.xerces.internal.utils.ObjectFactory.findProviderClass(String, ClassLoader, boolean) ObjectFactory.java:209 The exceptions aren't that problematic (just performance issue) but the actual issue I found was: WorkbenchPage.findEditor() performance is not nice if one has lot of not initialized editors (I had 30). WorkbenchPage.findEditor() iterates over all editor references and for each reference calls EditorReference.getFactoryId(). EditorReference.getFactoryId() implementation works fine for already initialized editors, but makes lot of overhead for uninitialized ones: *each time* it is called it parses xml memento, which causes 2 exceptions per call and lot of XML parser overhead just to get a single string. The patch follows.
New Gerrit change created: https://git.eclipse.org/r/41885
Gerrit change https://git.eclipse.org/r/41885 was merged to [master]. Commit: http://git.eclipse.org/c/platform/eclipse.platform.ui.git/commit/?id=fa2ad9430497b82c7ac5f853393ad0435d222ccc
Thank you, Andrey, for the fix.