[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [viatra-dev] Metamodel provider update
|
Hi,
I believe one of the most serious woes of the current tooling is the long
stalls that happen during the editing of vql files.
Even if there is no large impact of batch build performance, is it possible
that your change successfully eliminated or reduced the recomputations
necessary for these frequent and annoying pauses?
Thanks
Gábor
-----Original Message-----
From: Zoltán Ujhelyi
Sent: Wednesday, August 30, 2017 11:36 AM
To: Viatra project developer discussions
Subject: [viatra-dev] Metamodel provider update
Hi all,
during the last meeting I have mentioned that I am working on a prototype
editor for VIATRA Queries that uses Xtext index for resolving metamodel
references. I have finally managed to execute some preliminary performance
measurements on a large (but proprietary) project with several hundred
patterns on build times, and tried to use the editor to have a feel for the
performance of the editor, content assist, etc.
I have compared the performance of VIATRA 1.6.1 release, both the default
version and with the optional target platform caches by measuring the time
of cleaning and building the pattern projects. For measurements I have not
created any setup, just looked at the time when the build was started and
stopped. The results were the following:
* 1.6.1 (default): 7 minutes
* 1.6.1 (with cache): 4 minutes
* 1.7.0 (prototype): 3-4 minutes (a little bit better than the caching
solution, but the difference is small enough that it can be a measurement
error).
When testing the responsiveness of the editor, basically the prototype
editor is about as snappy as the one with the caches (which means slow, but
usable); while with the default behaviour it is unusable (e.g. you have to
wait a minute or more for the response).
——
The question is now whether it is worth to continue the work with the
prototypes, as there is still work to be done before it would be ready for
use. I see the following benefits and issues based on the existing work:
* Benefits
* We can remove the entire metamodel provider infrastructure. This has
multiple benefits:
* The code is complex and error-prone; I hope this will increase the
stability of the codebase.
* We might possibly remove support for the vqgen files, as they will
not be used anymore.
* Hopefully we will be compatible with the generic Maven and Gradle
plug-ins of Xtext, and thus VIATRA can be used in Gradle projects as well.
(Not tested!)
* We could provide a better import management for VIATRA. Basically, we
might switch to import classifiers one-by-one, and then the required
declarations could easily be added by content assist, similar to the Java
and Xtext editors.
* Issues, future tasks
* Backward compatibility with old versions is problematic, as I cannot
find the classes/packages are not cached by nsURIs but Java qualified names
into the index (not exactly but close enough). I see two potential solution
for this issue:
1. We include both the old and new import; and make sure the old code
is not executed when only the new import syntax is used, and provide some
tooling to gradually migrate everything. This can become quite complex.
2. We explicitly break compatibility, and provide a (hopefully)
automatic migration tooling; however, end users might be less likely to
upgrade because of this.
* I have not tested yet how well does this approach work when the
genmodel is missing (e.g. not included in the plug-ins, etc.). There might
be some issues there that might require further research or experiments.
* There are some features in the current prototype that were turned off,
as they were not required to the first prototype version, e.g. right now the
ecore/genmodel files have to be available in a source folder, and some
validations are turned off. These features can be turned back on, just some
more work is necessary.
——
To summarize, I am not sure whether it is worth pursuing this prototype any
further, as we have already a cheaper but backward compatible alternative
with basically the same performance; and I don’t know whether the other
benefits outweigh the implementation costs. What do you think?
Best regards,
Zoli
-- Zoltán Ujhelyi
Eclipse Technologies Expert
IncQueryLabs Ltd.
_______________________________________________
viatra-dev mailing list
viatra-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from
this list, visit
https://dev.eclipse.org/mailman/listinfo/viatra-dev