Are you building on NT? If so,
you can eliminate the file access problem by using snapshot
views, where all the files are local anyhow. Then
you just take a one time little hit at the beging
of a build to update whatever files changed since
the last update...

If it's dynamic views (be it NT or Unix) then
yes, file system access is slower. Let me
ask this - what are the time savings? 
  5%? 25%? 100%? more?

I feel rather nervous about changing the behavior of
a basic task like javac just to accomdate a particular
3rd party software. I use clearcase my self, and
compile over 2900 source files in 8 minutes on a dynamic
view on a Solaris 8 box, and in about 5 minutes on
an NT box in a snapshot view. I never  figured the
3 minutes difference was worth the kind of change
you suggest. Especially when I compare this to
the 90 minutes it used to take with 'make'....


Jay Glanville wrote:
> 
> I have found the need to change the behaviour of the javac task in
> conjunction with the way that files are included/excluded before the
> compiler is called.
> 
> Currently, what happens is that the Javac task creates a set of "candidate"
> files.  This is a list of files that match the include and exclude patterns
> stated by the task's attributes/parameters.  Next the Javac task goes
> through that set of candidates, eliminating source files where the
> associated class file is considered up to date with the source file.  Thus,
> the task only sends the files to the compile that it thinks are out of date.
> 
> My desire is to have a little bit of control over that second stage - the
> elimination stage.
> 
> Why?  On a ClearCase file system, file access is slightly slower then local
> hard drive access (due to networks, NFS mounts, repository server loads,
> etc).  Therefore, accessing two different files in different directories for
> time stamps can take a while.
> 
> What do I propose?  I want to be able to tell the javac task to ignore the
> elimination phase.  I want the task to simply send all files to the
> compiler.
> 
> How do I propose to do this?  I have added an attribute to the MatchingTask
> task called "includelevel".  This is to indicate the level to which I want
> to include files.  MatchingTask is only the holder for the attribute -- it
> actually does nothing with it.  It is up to subclasses to react to the value
> within the attribute.  Therefore, I have also made changes to the javac task
> such that if the includelevel attribute equals "all" then all files will be
> included in the javac task.  If the includelevel equals "outofdate" (or
> anything other then "all" for that matter), then the default behaviour will
> be used.
> 
> Why have I put the attribute in the MatchingTask class?  I'm sure that there
> are sub tasks that could more granularity of control over the include
> results.
> 
> Does this work?  I have found it to be quicker on slow file systems where
> the code base is over 1700 files.
> 
> Well?  What does the ant community think?
> 
>  <<index.html.txt>>  <<Javac.java.txt>>  <<MatchingTask.java.txt>>
> 
> --
> Jay Dickon Glanville
> P068 - SiteManager Development, Nortel Networks
> 613-765-1144 (ESN 395-1144)
> MS: 045/55/A05
> E-Mail: [EMAIL PROTECTED]
> 
>                                                   
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>                      Name: index.html.txt
>    index.html.txt    Type: Plain Text (text/plain)
>                  Encoding: quoted-printable
> 
>                      Name: Javac.java.txt
>    Javac.java.txt    Type: Plain Text (text/plain)
>                  Encoding: quoted-printable
> 
>                             Name: MatchingTask.java.txt
>    MatchingTask.java.txt    Type: Plain Text (text/plain)
>                         Encoding: quoted-printable
> 
>                                                   
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to