Book a Demo
Prev Next

Performance Considerations

This topic presents a few 'best practices' for version control that improve model performance, along with a short explanation of how that benefit is realized.

Apply Version Control to All Packages

Apply Version Control to each and every package within your model.  This is easily acheived using the convenience function "Add Branch to Version Control".

Version Control performance can be dramatically improved by following this practice.

The mechanism used for applying Version Control in Enterprise Architect is to export the information describing a package and its contents, from the model database to an XMI file, which is then added to the version control repository.  If version control is applied only to the top-level package, then the entire model is exported and saved to a single XMI file.  Every time you update the package from version control, for either a "Check Out" or a "Get Latest", the package and its contents are first deleted from the model database, before being re-imported from the associated XML file.  In this case, the entire model would be deleted from the database, before being re-imported from XML.  By contrast, if all packages are version controlled, then only a tiny portion of the model is exported to each XML file and only a tiny portion of the model is deleted and re-imported when checking-out or updating a package.

Concurrent access for editing the model is also vastly improved by following this practice.

When a version controlled package is checked-out, that package and its contents are locked to other users - only the user who has checked-out the package can edit it.  If version control was applied only at the top-level package, when one user checks out that package, then the entire model would be locked, preventing any other team members from making modifications until the top-level package is checked in by the first user and subsequently checked out by the other.  If, on the other hand, version control is applied at multiple levels within a package hierarchy, independently controlled sub-packages remain unaffected when the parent package is checked out.  So, if one user checks out a package to make modifications, a second user can still check out a separate package at the same time and make modifications to that package.

Select "Import Changed Files Only" for Get All Latest

The performance of the "Get All Latest" function, is dramatically reduced by re-importing package files that have not changed.  So, for best performance do not re-import unchanged package files.  When the "Get All Latest" command is invoked, you will be prompted to select which files to import. You should always choose the option "Import Changed Files Only". 

For Shared Model environments, when the option "Import Changed Files Only" is used, the Get All Latest command will simply refresh your view of the model, by reloading diagrams and Browser window content, from the model database.  If you select "Always import" or "Prompt for each file", you are forcing Enterprise Architect to delete the package from the model database, then re-import exactly the same information back into the model. 

When using a Shared Model environment, where all users are connected to a single model database, there is never any need to re-import package files from version control.  The information in the model database is always the same as, or ahead of, what is committed into Version Control.  In this situation, the information in version control has been exported from the model database before being committed into version control.  You simply cannot import new information into the model from the version control repository.  When using a Private Model environment, where each user connects to a private copy of the model database, there is still no benefit in re-importing package files that have not changed since your last update.  It only extends the time taken for the operation to complete.

Use a Single Version Control Configuration to Control All Packages in Model

Minimising the number of Version Control configurations in your model will result in a faster model loading time.  Using multiple Version Control configurations in a single Enterprise Architect model will extend the time taken to load the model. 

While it is possible to use many different Version Control Configurations to control different packages in your model, unless you have a specific reason to this, then you should use just one configuration for all packages in the model.  When Enterprise Architect loads a model that uses version control, it verifies that it can communicate properly with each of the Version Control configurations as the model is loaded.  Depending on the version control provider, EA issues a command such as "status" in the working copy folder associated with the Version Control configuration, which verifies that the working copy folder exists and can be accessed and that the version control client can communicate with the version control server.  All of this takes time.  When there are many Version Control configurations in one model, this can have a significant impact on the time it takes to load your model.