ant-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 46088] New: Performance (speed) of large path(s) must be improved.
Date Sat, 25 Oct 2008 14:22:20 GMT
https://issues.apache.org/bugzilla/show_bug.cgi?id=46088

           Summary: Performance (speed) of large path(s) must be improved.
           Product: Ant
           Version: 1.7.1
          Platform: PC
        OS/Version: Windows Vista
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Core
        AssignedTo: notifications@ant.apache.org
        ReportedBy: asusnjar@hotmail.com


Path in ant are efficient only for very small/short paths. When working with
large paths and their aggregation, path manipulation, including list() method
can take by far the most (>80% in my case) of the *entire* build time (by
creating my own 'fastpath' type that extends path I was able to reduce the
build time from over 50 minutes to less than 10)! 

The culprit: even though paths are specified immutable once created, they are
not treated that way. Every time list() and related methods are invoked, the
entire hierarchy of paths is walked through as if it never has been before. It
explicitly prevents any form of caching, as far as I can see.

One of the problems is that the path "materialization" (e.g. for list() method)
is deferred, and it can contain mutable pieces in it, such as the filesets
(e.g. new files may appear after declaration and before materialization and
also between two materializations). However, if one is willing to sacrifice
that ability (not a problem in many cases) and accept that the first
materialization freezes the state, then a lot of build time can be saved.
Otherwise, a smarter caching and notification/update mechanism may need to be
used.

Granted, this issue is more pronounced with larger projects (tens of thousands
of classes in my case), but solving it would not hurt anyone else.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

Mime
View raw message