Community
Participate
Working Groups
Created attachment 272897 [details] Sample project to reproduce the issue DesignServices.getDisplayedEClasses and related methods use DDiagramQuery.getAllDiagramElements() to obtain all the DNodeLists, but that method also returns all the edges, nodes and list elements. This adds up and causes performance issues. Using the attached project, with a single diagram showing 1500 EClasses, 1500 EAttributes and 2500 EReferences, opening the diagram takes around 16s, with DesignServices.getDisplayedEClasses identified as a hot spot. I'll push a patch on Gerrit which uses new DDiagramInternalQuery(diagram).getContainers() instead on several methods of DesignServices. It uses an internal method in Sirius, but results in a significant speedup: a little less than 7s (instead of 16) to open the diagram.
New Gerrit change created: https://git.eclipse.org/r/118236
Gerrit change https://git.eclipse.org/r/118236 was merged to [master]. Commit: http://git.eclipse.org/c/ecoretools/org.eclipse.ecoretools.git/commit/?id=1030ac23fcd35f56efed73a2f5a754fce38125b1
Good catch, thanks!