Community
Participate
Working Groups
https://git.eclipse.org/r/#/c/67741/ identifed one of the main culprits in terms of performance when properties views are enabled: properties view require a specific service class (SiriusToolsService) to be registered in the session's interpreters to work, and Sirius does not currently offer any better way than to register it programmatically and then unregister it after use to avoid name clashes. This constant register/unregister has a huge performance impact. The actual solution is not obvious, and several options are on the table right now. Some of them may be more general than just fixing the SiriusToolsService issue, but for now the scope is to fix the performance issue in the context of properties view. If we end up with a more general solution, so much the better, but it's not the main priority. Some options: * keep the register/unregister as it is, but change JavaExtensionManager to not invalidate its whole cache just because we unregistered a single service class. More generaly, tweak JavaExtensionManager so that register/unregister is as close as a "free" op as possible. * never unregister the SiriusToolsService, but somehow ensure the services it provides do not risk clashing with other service classes in the session. See also the commit message in https://git.eclipse.org/r/#/c/67741/ for other ideas.
After analysis, the first approach is too impacting. At first glance it leads deep in AQL's ServiceStore, a critical piece of AQL's runtime which is optimized for lookup. Any change there is very risky. We'll take the second approach: leave SiriusToolsService registered and the services it exposes visible to the whole session (easy), and refactor the said services to reduce the risk of clashes with user-provided services that could be signature-compatible.
Some performance numbers: using an artificial example metamodel where elements have 60 features (a mix of booleans, ints, strings and non-containment references), applying the default rules to produce the properties of such an element takes around 660ms (as measured by the time taken in EEFTabbedPropertySheetPage.doSetInput(), and after several iterations to get stable results). Simply avoiding the unregistration of SiriusToolServices, the same scenario takes about 420ms, so a speed improvement of 37%.
Gerrit change https://git.eclipse.org/r/80666 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=a925cb5eaf7a818c97e0cf83d59d6c27ac40ab75
New Gerrit change created: https://git.eclipse.org/r/82332
New Gerrit change created: https://git.eclipse.org/r/82331
New Gerrit change created: https://git.eclipse.org/r/82330
Gerrit change https://git.eclipse.org/r/82332 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=6fe19536c87eaf8a8fd49655d0d0d05f7deec5e9
Gerrit change https://git.eclipse.org/r/82331 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=dd3650fc433c01c0885dd295a6252694a41b6748
Gerrit change https://git.eclipse.org/r/82330 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=474124ca7f173fec25383e3e3d1893aaa3936e80
New Gerrit change created: https://git.eclipse.org/r/82530
New Gerrit change created: https://git.eclipse.org/r/82529
New Gerrit change created: https://git.eclipse.org/r/82528
New Gerrit change created: https://git.eclipse.org/r/82527
New Gerrit change created: https://git.eclipse.org/r/82526
New Gerrit change created: https://git.eclipse.org/r/82532
New Gerrit change created: https://git.eclipse.org/r/82531
Gerrit change https://git.eclipse.org/r/82526 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=f489addeac7320559081ffb104dcea1457267e9e
Gerrit change https://git.eclipse.org/r/82529 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=2e45d46b30ab52ceae83908af660615450b8b9ec
Gerrit change https://git.eclipse.org/r/82528 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=b9fddb7d5e78b0dfdc4ce385f938c50a79a1eda7
Gerrit change https://git.eclipse.org/r/82527 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=d0d07ff2ea823e312261a81671b3ece8cde8ee7f
Gerrit change https://git.eclipse.org/r/82530 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=1bc051ef00a7c7fea8e0b9091f2ecd4eab57b997
Gerrit change https://git.eclipse.org/r/82531 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=d14e28d28077216580bcaa1e37ccbeabea89ebdc
Gerrit change https://git.eclipse.org/r/82532 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=ac9e827701863f3a9ea80c9090f43d383bb8f2b8
Gerrit change https://git.eclipse.org/r/67741 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=06b131c91d08ad74c13f8305e6398b4987cd8753
Fixed. There's nothing specific to validate here, as it is mainly internal changes for optimization purposes. It should have had no visible impact except on speed.
Available in Sirius 4.1.0, see https://wiki.eclipse.org/Sirius/4.1.0 for details.
Gerrit change https://git.eclipse.org/r/85416 was merged to [master]. Commit: http://git.eclipse.org/c/eef/org.eclipse.eef.git/commit/?id=896b8b4639bed9137404d3adbec43e906c22dc28
New Gerrit change created: https://git.eclipse.org/r/87805
New Gerrit change created: https://git.eclipse.org/r/87877
New Gerrit change created: https://git.eclipse.org/r/87878
Gerrit change https://git.eclipse.org/r/87805 was merged to [master]. Commit: http://git.eclipse.org/c/eef/org.eclipse.eef.git/commit/?id=5eb325a1245ec5804520ea99b618284b574a993f
Gerrit change https://git.eclipse.org/r/87877 was merged to [v4.1.x]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=331066be377757c20bab9fd8408521a4d2483a79
Gerrit change https://git.eclipse.org/r/87878 was merged to [master]. Commit: http://git.eclipse.org/c/sirius/org.eclipse.sirius.git/commit/?id=aacbb3feb2317efcf2487ed0dfa9949249f8a4d9