Epsilon profiling tools missing? [message #986474] |
Tue, 20 November 2012 10:19  |
Eclipse User |
|
|
|
Now that I can run transformations for simple input models, it is time for me to compare the implementation to the current Java implementation. The current Java implementation (which is a full translation) runs in about 15 ms per input model and the (partial) Epsilon runs in about 150 ms; it is interesting to see a factor 10 slowdown on this transformation already. Therefore I would like to see where the time is spent and want to use the Epsilon profiling tools, as advertised on the Epsilon homepage.
However, I could not find any reference to how to profile on the Epsilon website, but Googling "epsilon profiling tools" shows http://www.eclipse.org/epsilon/doc/EpsilonProfilingTools.pdf which is a document by Dimitri from back in 2007. Unfortunately, the examples presented there do not work for me: the type "org.eclipse.epsilon.eol.builtin.ProfilerTool" is not found. Searching for a "Profil*" type shows me that there is no longer anything related to profiling included in the Epsilon repository.
So, my question is: has this profiling tool been renamed? Or has this tool become legacy (replaced by other technologies, didn't look into that yet)?
|
|
|
|
Re: Epsilon profiling tools missing? [message #986709 is a reply to message #986664] |
Wed, 21 November 2012 06:56   |
Eclipse User |
|
|
|
I do understand that E*L languages are interpreted and I don't think that 10x slower is that bad, but I would like to see if the profiling tool shows me what the expensive parts are, so that I can try to tune this when it gets out of hand and identify the bottlenecks, instead of guessing what the root cause is.
With the latest releases I reckon that instead of org.epsilon it should be org.eclipse.epsilon, but then the builtin package is not found (in a normal Java environment). Finally, org.eclipse.epsilon.eol.tools.ProfilerTool seems to be the correct location. However, I'm still unable to instantiate this from EGL via the standalone job. I've added the tools package to both the transformation plugin and the standalone plugin, but it is still not recognized as a type.
While making a minimal example, I created an EOL file with the content of the example in the pdf linked in the first post, but changed the native type to org.eclipse.epsilon.tools.ProfilerTool which does execute correctly for me. I will investigate why my standalone example (which uses the WorkspaceJobs as in the Epsilon Labs) does not recognize the type... It seems the job itself can actually properly instantiate the type.
So to answer my own question: yes, it has been moved, but that was only part of the problem apparently. Will follow up if my solution/actual problem is worth sharing.
|
|
|
|
|
|
Re: Epsilon profiling tools missing? [message #987120 is a reply to message #986846] |
Fri, 23 November 2012 10:50   |
Eclipse User |
|
|
|
Hi again,
You're welcome, thought I'd give something back to the community 
Today, I've come across the options to automatically profile an EOL file by setting the profile options in the run configuration. However, this does not mix with normal profiling calls (see bug #394975).
What I learned from profiling my transformation is that loading templates is costly; i.e. the time it takes to load a single template is longer than the time the original transformation used to process and write everything to disk. That's okay (and somewhat expected) though, now I'm just trying to work around this, by avoiding to reload templates from files.
Also, it seems (but I'm not sure) that the profiling information in an Eclipse session launched from Eclipse cannot be more precise than 10ms (most results are a multiple of 10), while in a normal Eclipse environment it seems to be accurate to 1ms. Is this perhaps a restriction for any Eclipse WorkSpaceJob?
On another note, I've just now added the fine-grained profiling to the transformation job by using:
module.getContext().getExecutorFactory().addExecutionListener(new ProfilingExecutionListener()); from org.eclipse.epsilon.profiling.ProfilingLaunchConfigurationListener but I didn't get any output on any of the windows; apparently the listener needs to be applied _AFTER_ the module has been parsed.
Thank you for your time,
Joost
[Updated on: Fri, 23 November 2012 10:52] by Moderator
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.08008 seconds