We have a big model to load and so we ran some performance testing - we summarise the results below.
It would be really helpful if people could tell us whether these results fit with their experience. And also share any tips for further improvement?
We have a model that we are trying to load in EA, currently using an MS Access Database EA Project but as we reach the limit of Access we will move to an SQL Server EA Project. It has: 14284 classes, 42725 attributes, 57065 connectors, 28483 proxy connectors.
Our first attempt at loading using EA Automation took 18 hours to load this full model. We then found this link:
https://sparxsystems.com/forums/smf/index.php?topic=4143.0 and by using the performance flags (BatchAppend, EnableUIUpdates) this took the time down to 6 hours. We noticed here that we were calling the interface to retrieve created objects (e.g. repository.GetElementByGUID()). By storing the objects locally instead we got the time down to 3 hours. Also, there appears to be no difference between using the internal VBScript or the external EA Automation.
We also tried another approach of using Native XML through the ImportUsingXMI command. This only took 15 minutes to run.
We then looked at trying to compare the performance of these techniques, comparing the simple task of how long it took to load a number of classes into a package.
The table below shows the results of this comparison.
The values of the right-hand three columns are average times to load a class in milliseconds. As you can see, when the performance flags are off the time grows linearly with the increase of classes, for the other two it is roughly constant.
Number of Classes Flags off Flags On NativeXML
1000 12 5 8
10000 21 5 4
20000 34 5 9
30000 47 6 6
40000 62 5 6
50000 78 5 7
60000 91 5 11
70000 106 6 10
80000 119 6 10
90000 135 5 11
100000 152 6 12It looks like the 'Flags On' approach is the best, but when we have a more complicated model than just classes in a package (see times above) then the 'NativeXML' approach is better.
