Bug 470709 - Limit the number of IO operations when computing local model
Summary: Limit the number of IO operations when computing local model
Status: NEW
Alias: None
Product: EMFCompare
Classification: Modeling
Component: Team (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows 7
: P3 enhancement (vote)
Target Milestone: ---   Edit
Assignee: EMF Compare CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-22 09:10 EDT by Laurent Goubet CLA
Modified: 2015-06-22 09:10 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Laurent Goubet CLA 2015-06-22 09:10:45 EDT
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.