eclipse / epsilon

Epsilon is a family of Java-based scripting languages for automating common model-based software engineering tasks, such as code generation, model-to-model transformation and model validation, that work out of the box with EMF (including Xtext and Sirius), UML (including Cameo/MagicDraw), Simulink, XML and other types of models.
https://eclipse.org/epsilon
Eclipse Public License 2.0
55 stars 11 forks source link

getTransformationTargets() in TransformationTrace needs optimising #43

Closed agarciadom closed 1 year ago

agarciadom commented 1 year ago

I'm working on an Epsilon solution for the TTC 2023 KMEHR to FHIR case, and I've noticed that our execution times increase very significantly from the second-to-last to the largest model:

image

A quick check with VisualVM shows we're spending 139s in the TransformationTrace.getTransformationTargets() method:

image

Looking at the method, it seems to have a similar issue to ECL's old MatchTrace, where it was using a simple loop over a list rather than a data structure which would scale better as models get larger.