| Summary: | Use MinimalEObjectImpl.Container as base for Sirius metamodels | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| Product: | [Modeling] Sirius | Reporter: | Pierre-Charles David <pierre-charles.david> | ||||||
| Component: | Core | Assignee: | Florian Barbin <florian.barbin> | ||||||
| Status: | CLOSED FIXED | QA Contact: | |||||||
| Severity: | normal | ||||||||
| Priority: | P1 | CC: | belqassim.djafer, esteban.dugueperoux, florian.barbin | ||||||
| Version: | 1.0.1 | Keywords: | triaged | ||||||
| Target Milestone: | 3.0.0M5 | ||||||||
| Hardware: | All | ||||||||
| OS: | All | ||||||||
| Whiteboard: | |||||||||
| Attachments: |
|
||||||||
|
Description
Pierre-Charles David
A gerrit that changes the Sirius MM default EObject implementation to MinimalEObjectImpl.Container: https://git.eclipse.org/r/#/c/40037/ I made some measurements with EObjectImpl implementation and MinimalEObjectImpl.Container implementation (with reverse-sirius-10times project) Memory measurements: * After having opened the big representation: ** With EObjectImpl: *** Total retained size: 383 MB *** AirdResourceImpl: ~ 62MB ** With MinimalEObjectImpl.Container: *** Total retained size: 354 MB *** AirdResourceImpl: ~ 62MB * After having opened the session (without opening any representation): ** With EObjectImpl: *** Total retained size: 346 MB *** AirdResourceImpl: ~ 63MB ** With MinimalEObjectImpl.Container: *** Total retained size: 333 MB *** AirdResourceImpl: ~ 63MB Created attachment 250136 [details]
Big model reverse-sirius
Created attachment 250141 [details]
Modified Example with less semantic elements en more Sirius elements
I made additional measurements with a project containing more Sirius elements (DDiagram and DDiagramElement) to emphasize the difference between EOjectImpl and MinimalEObjectImpl.Container. I made two memory snapshots after having loaded this modeling project: https://bugs.eclipse.org/bugs/attachment.cgi?id=250141 With EObjectImpl: * Retained size: 325 MB With MinimalEObjectImpl.Container: * Retained size: 255 MB I took org.eclipse.sirius.diagram.business.internal.metamodel.spec.DSemanticDiagramSpec as example: * With EObjectImpl : ** Objects: 10744 ** Retained Size: 8361976 Bytes * With MinimalEObjectImpl.Container : ** Objects: 10744 ** Retained Size: 6385080 Bytes About 23% saved on this object I did not notice significant performance differences during the session opening: With EObjectImpl: OpenRepresentationsFileJob.java:213 org.eclipse.sirius.ui.tools.internal.views.common.modelingproject.OpenRepresentationsFileJob.performOpenSession(URI, IProgressMonitor) 85,529 ms With MinimalEObjectImpl: OpenRepresentationsFileJob.java:213 org.eclipse.sirius.ui.tools.internal.views.common.modelingproject.OpenRepresentationsFileJob.performOpenSession(URI, IProgressMonitor) 83,569 ms Precision about Comment 5: By taking the "Strong reachable" Objects, the total retained size (the entire Eclipse) is: 265 MB with EObjectImpl 234 MB with MinimalEObjectImpl.Container Fixed by 77371ac2b9d69d445c8e4d9bb7edabfb7464abb0. Verified as technical issue Available in Sirius 3.0.0. See https://wiki.eclipse.org/Sirius/3.0.0. |