LemonTree is slow, what can I do to improve performance?
LemonTree needs strong hardware to quickly load, diff and merge models. We recommend a recent middle-class CPU (i5, Ryzen, Xeon E3 at the time of writing), paired with a large amount of RAM (16GB in Dual Channel configuration). LemonTree parallelizes its most demanding tasks, so these are the most important metrics for LemonTree to run fast:
- Number of physical cores
- Speed of those cores
- Available memory
- Memory bandwidth
Enterprise Architect uses a legacy version of Microsoft Access to store the data for .eap(x) models. Both reading and writing models needs to utilize appropriate drivers to interact with the .eap(x) models, which are notoriously slow.
This puts a natural limit on any performance improvements we can include in LemonTree.
Unfortunately, this also means that better hardware can only improve performance up to a point. Don't expect big performance gains from server class hardware.
LemonTree needs to load representations of up to 3 different models into memory to efficiently perform both the diff and merge. These representations LemonTree are built to ensure maximum processing speed, and may require significantly more RAM than the required disk space of the model. If your computer can supply the necessary RAM to do so, this does not have an adverse effect on the performance of LemonTree.
However, once the memory usage of a computer approaches the hardware maximum, a process known as memory swapping sets in. Parts of the current RAM are written to the harddisk so they can be re-used, and the data is retrieved from the harddisk. While this technique provides additional RAM, the switch itself is excessively slow. As such, once a LemonTree diff/merge requires memory swapping to be used, it will still complete, but it will take a multiple of the otherwise required time.
We're always looking for ways to improve the performance of LemonTree. As such, it's a good idea to always keep your version of LemonTree up-to-date to ensure optimal performance.
More details on the development of performance and memory consumption of different LemonTree versions can be found here:
Does LemonTree support diffing/merging my entire model?
Due to the complexity of data of the various model types supported by LemonTree, and LemonTree's mechanism of accessing this data (by reading the stored data directly), there is unfortunately no way to accurately judge if all data stored in your model will be correctly diffed/merged.
We are currently working on a comprehensive evaluation of this topic, but the results are still unfinished.
For now, we are maintaining a list of Enterprise Architect features which are not supported by LemonTree, which you can find here:
LemonTree is reporting that my model has inconsistencies. What happened? What can I do?
This is a complex topic, unfortunately, but we'll do our best to help. Please see the separate page on this topic:
Text in the Tree Browser is partially cut off. How do I see the whole text?
The GUI of LemonTree is a HTML-GUI. So the features of HTML are available.
Use "Shift" and the mouse-wheel to scroll horizontally.
I have troubles installing the RLM License Server for Floating licenses. What can I do?
Where do I find the logfiles of LemonTree?
Logfiles can be downloaded via the burger menu.
They can also be found in %appdata%\LieberLieber\LemonTree\logs
If you've discovered any irregularities, please don't hesitate to report an issue. Details can be found here:
Questions Webinar April 2, 2020
Where can I see which branch was checked out?
Answer: The selected branch is "greyed out" in the LemonTree addin menu.
Franc: About the LemonTree integration with EA: it's the first time I see this menu in a presentation. Is it already part of LemonTree? Is it another addon? Where can I find it. I only use LT from Tortoise as of now.
Answer: The LemonTree Addin is part of the LemonTree setup (2.5 and higher)
How does commenting the commit align with change history in EA?
Can code base (e.g. Visual Studio Solution) and model be held together in the same GitRepo?
Answer: Yes. This is one major advantage of this approach.
Would GIT be able to resolve this automatically when you'd checking MPMS exports instead eap files?
Answer: If you have separated MPMS, the behavior is similar, because it has to be prevented that a text-based merge tool is touching the MPMS files. Completely automatic merge is possible when hooks are defined within the Git client.
All files are stored as binary? hence every commit (change) is a copy of the binary. what about the size of the git repo after all this commits, i guess it is getting huge
Answer: We suggest to use the Large File Storage extension for Git. Here, only pointer references are committed. Please see: https://git-lfs.github.com/
Why zooming is improportional in three views?
Answer: Typically zooming is in sync in all views of the diagram viewer.
Is there a visual indication in LemonTree showing what A and B refer to? (= what branch)
Answer: LT can be configured to show the revision for the A and B Model, using the yrev and brev parameters. Installing the Tortoise integration of LT already handles this. The revision is shown in the header and tooltip of the corresponding view in LT (above the model tree).
Why is the diagram shown as conflicted. the diagram itself has been only modified in B
Answer: The diagram is shown as conflicted because the diagram representations, which are sub-objects of the diagram, have been modified (i.e. there Position has changed). This would be visible when expanding the diagram in LT where it would Show the corresponding element and diagram representation.
Where was the confirm of the change and one conflict was still shown at the upper left corner
Answer: Changes in LT are confirmed once at the end by selecting Merge which applies these changes. The number of conflicts does not update as LT does not know when a conflict has been fully resolved. However, you can use the review checkmarks and Filtering Impacted Elements / Impacted Diagrams and the Tree Browser functionality to hide elements which caused a conflict but have been reviewed already.
In the merge-window: is there a possibility to list all conflicts and which of them are already resolved?
Answer: There is a preconfigured filter to show only conflicted elements. You can use the check marks next to the elements in the "List of Impacted elements" and combine both filters:
#Conflicted AND NOT #Reviewed
Are you thinking about (or planing) offering Lemon Tree for Cameo Systems Modeler?
Answer: From a technological point of view, LemonTree middle ware is designed to be used in a tool independent way. However, technological challenges are usually the smallest challenges.
When I was evaluating LemonTree in the past, I observed that obvious changes could be merged easily. But I really struggled getting a good overview of the changes in diagrams. How would I deal with that? Could you demo this?
Answer: We've introduced advanced filter mechanisms to support users in getting a better overview of all changes. We can show you the possibilities in a web meeting!
What is your recommendation if we have several "long living" feature branches. Regularly merging the develop into the different branches or making "rebase"-branches based on develop and merging the original feature branch onto the new "develop" base?
Answer: It is hard to recommend one approach over the other, as the answer depends a lot on the way modeling is done as well as the structure of the model and the nature of these feature branches. However, rebasing your feature branches often reduces the time between the change and the (potential) merge of this change into your main branch. As such, resolving conflicts tends to be easier when doing the rebases often. Related to that, in general we recommend squashing of the feature branch before doing a rebase if possible, as it reduces the number of required merges and therefore the time it takes to do the merge.
How he can find out the element type?
In the Impacted element list (or in the tree), hover over the icon of the changed element. Select the element and navigate to the proberties view. Select either "All" or "Set" at the right hand side to show the UML type.
Questions Webinar April 28, 2021: LemonTree 3.0 Live Demo
Can the functionality also be used to split up huge models?
Answer: One use case of the "model splitting feature" is definitely dividing huge models in smaller parts for better model management and version control.
SVN is beneficial for huge models, that is why we still use it.
Answer: EAP(x) files can be still checked in into SVN. LemonTree is still automatically integrated in TortoiseSVN.
Importing a model, makes a copy of it or it links into it?
Answer: When importing a model, a copy is created. This follows the idea of branching. We recommend to check-in the EAP with the imported model into Git.
Can I export the difference results as a report?
Answer: Reports (csv, html, pdf, etc.) are currently not part of the standard product.
Which EA version is required for this feature?
Answer: We recommend EA 14 or higher. From a technical point of view, it should also work with older version of EA.
Does this text-based diff also work with scripts inside the model?
Answer: The DB table containing the scripts are currently neglected. We recommend to put the scripts into an MDG technology for the better deployment.
Is the creation of links also disabled if the LemonTree Add-In in Sparx is not active?
Answer: The model elements are still locked, when the Add-In is deactivated.