Community
Participate
Working Groups
It should be possible to "stop" the computation of local logical models when we reach files we've already loaded and mapped in the dependency graph. For example, on a repository which contains : Project1 |- File1 |- File2 Project2 |- File3 |- File4 Project3 |- File5 Let's assume File5 references File3 and File4, File3 references File1, and File4 references File2. Let's now assume that we're merging this with another branch, in which all 5 files were changed. We start the merge with a right-click on project1. We're using the "Container" resolution scope. We will first compute the logical model of File1 and File2. They have no outgoing references, so that's all we compute. Later on, when we need to merge File3, we'll load File1 and File2 again (even though they're already mapped in our dependency graph) since File3 and File4 point to them, and it's a new resolution phase (and thus, neither of the first project's files are in the "already computed" set in the ResourceComputationScheduler). Later still, we'll need to compute the model of File5. In the same way as above, we'll load again File3, File4, File1 and File2. That's 6 I/O operations that could have been avoided if we had just "reconnected" our new files (File3 and File4, then File5) to the existing nodes in the dependency graph instead of connecting them then load the dependency to detect -again- its model. This can only be done for local files, but it may decrease the overall computation time for the EMF logical models.