| Summary: | Improve performance of the symbolic link recursion detection in UnifiedTree | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Martin Oberhuber <mober.at+eclipse> | ||||
| Component: | Resources | Assignee: | Platform-Resources-Inbox <platform-resources-inbox> | ||||
| Status: | RESOLVED DUPLICATE | QA Contact: | |||||
| Severity: | normal | ||||||
| Priority: | P3 | CC: | aleherb+eclipse, hashproduct+eclipse | ||||
| Version: | 3.3 | ||||||
| Target Milestone: | --- | ||||||
| Hardware: | All | ||||||
| OS: | Unix All | ||||||
| Whiteboard: | |||||||
| Attachments: |
|
||||||
|
Description
Martin Oberhuber
Created attachment 65906 [details] Patch to avoid unnecessary getCanonicalPath() on same parent Attached patch is a very simple improvement to remember the canonical path of the previous parent if it has been computed. This helps reducing the number of getCanonicalPath() calls in the case where multiple symbolic links are in the same parent directory. For the test4_complex_udev from attachment 65204 [details], this gets rid of 34 unnecessary getCanonicalPath() calls, and reduces the calls on my machine from Time: 125 msec, levels: 14 nodes: 664, Canonicals: 184 to Time: 121 msec, levels: 14 nodes: 664, Canonicals: 150 measuring the third of three consecutive Refresh operations for warmup. As per the resolution in bug 232426 comment 25, it looks like the actual performance issues that have been seen were due to the way how RefreshJob called into UnifiedTree multiple times. There are still some known shortcomings: * On remote EFS-shared file systems, where getCanonicalPath() is not available, the algorithm does not work. * As per bug 105554 comment 41, there is a specific situation where a non-recursive symbolic link is detected as a false positive. * Depending on the node on which a refresh operation is initiated, recursive symbolic link structures can lead to different resource structures being detected. * As per bug 209190, symoblic links are still not visually represented as symbolic links. I think, though, that the solution we have now is sufficient in terms of Performance. Further improvements will likley need to make symbolic links first class citizens in the Resource model, and algorithms specifically designed for them. We are going to look at this in the context of http://wiki.eclipse.org/E4/Resources (See also bug 44107, and bug 105554 comment 58). Since the original reason for looking at Performance has been resolved with bug 232426, I'm marking this one as a duplicate. *** This bug has been marked as a duplicate of bug 232426 *** |