[EMFStore] Performance Measure [message #1803787] |
Sun, 10 March 2019 00:33 |
Alfa Yohannis Messages: 9 Registered: April 2018 |
Junior Member |
|
|
Hi Everyone,
I tried to run the following code to measure the performance of EMFStore by adding 2010 elements to a root element and measuring the delta time for each addition:
NodeFactory factory = NodeFactory.eINSTANCE;
Node root = factory.createNode();
root.setName("Node 0");
project.getModelElements().add(root);
for (int i = 1; i <= 2010; i++) {
Node node = factory.createNode();
node.setName("Node " + i);
long start = System.currentTimeMillis();
root.getChildren().add(node);
long end = System.currentTimeMillis();
System.out.println(i + ": " + (end - start) + " ms");
}
Apparently, the performance of EMFStore becomes slower as the number of elements increases.
The performance of adding the first 10 nodes is as follows:
1: 0 ms
2: 0 ms
3: 16 ms
4: 0 ms
5: 0 ms
6: 16 ms
7: 0 ms
8: 0 ms
9: 15 ms
10: 0 ms
And the performance of adding the last 10 nodes is as follows:
2001: 122 ms
2002: 125 ms
2003: 156 ms
2004: 110 ms
2005: 125 ms
2006: 109 ms
2007: 125 ms
2008: 109 ms
2009: 125 ms
2010: 119 ms
Any idea what causes the slowdown? What should I do to improve the performance?
Cheers,
[Updated on: Sun, 10 March 2019 00:35] Report message to a moderator
|
|
|
Re: [EMFStore] Performance Measure [message #1803844 is a reply to message #1803787] |
Tue, 12 March 2019 11:36 |
|
Hi,
please consider that EMFStore is in maintenance mode, meaning that there is no active feature development (see https://www.eclipse.org/emfstore/).
If you start a new project and consider to use EMFStore please note that we might declare EMFStore end-of-life in the year 2022. Other options to consider are EMF Compare and CDO. We have extensive knowledge in building solutions for model versioning and also offer commercial consulting and support on choosing a framework with the features of EMFStore and on using EMFStore, EMF Compare and CDO.
Regarding your issue:
EMFStore uses the FileBasedChangePackage as a default. This is optimized to keep memory consumption low. As a consequence every change is written to disk immediately.
Switching to the InMemoryChangePackage does not write to disk immediately and you should not see the slowdown, however all recorded operations are kept in memory.
See org.eclipse.emf.emfstore.internal.client.configuration.Behavior.useInMemoryChangePackage() for the configuration options.
Cheers
Johannes
Johannes Faltermeier
Get professional Eclipse developer support:
http://eclipsesource.com/en/services/developer-support/
|
|
|
|
Powered by
FUDForum. Page generated in 0.02055 seconds