Remy & Craig,

Thanks for your responses...

On Saturday, July 7, 2001, at 07:28  am, Remy Maucherat wrote:

>> The cases you've described above all happen only once (at startup
>> time).  Assuming that we could safely optimize these cases, would it
>> really make a significant difference?
>
> It wouldn't.
>
> While you were away, I did some profiling of the startup (since people
> complained), and it turns out that the time is mostly spent in :
> - Crimson, because it's used in validating mode
> - introspecting and doing various things in the XML mapper (no surprise)

The examples I gave were just some examples of getCanonicalPath that I 
located in the source - I acknowledge that I had been unable to identify 
which ones were taking up significant resources, though all the ones I 
listed were at least in loops.

I have had problems profiling Tomcat and Cocoon, but in those threads I 
have been able to profile under Mac OS X, getCanonicalPath (i.e. native 
UnixFileSystem.canonicalize) calls whilst running Tomcat 4 and Cocoon II 
constitute a *very* significant proportion of runtime.  I know that others 
have noted that this is also true under Windows, so this does not appear 
to be specific to Mac OS X, though the 'cost' of getCanonicalPath under 
Mac OS X may be proportionally higher than on other operating systems due 
to certain underlying filesystem issues.

>> To influence the performance of Cocoon, we'd want to look at the 
>> Resources
>> implementation.  It's been worked on, but I would certainly not say we've
>> really optimized it yet.  And reducing the number of calls to
>> getCanonicalPath() sounds like a good strategy -- as long as it can be
>> done safely.
>
> getCanonicalPath is called only under Windows (for case sensitivity
> checking).
> More profiling showed that the resources were fast enough.
>
> Remy

Remy - could you explain what you mean here.  getCanonicalPath calls 
within Tomcat are not, as far as I can see, conditional upon runtime 
Operating System.  Both Windows filing systems and HFS / HFS+ (Under Mac 
OS / Mac OS X) are case insensitive, the latter being BSD Unix derivative.
   I would have thought that calls to getCanonicalPath would be required, 
not just for case sensitivity reasons, but also to deal with the 
assortment of equivalent path descriptors, e.g. the use of "..", ".", 
"~user" and the effects of filesystem softlinks, hardlinks, aliases, 
shortcuts, or whathaveyou.  If getCanonicalPath is being used as a case 
insensitive string comparitor, then I am sure there are less costly 
alternatives.

When you say that profiling indicated that resources were fast enough, do 
you mean that getCanonicalPath is not a significant bottleneck on any 
platform?  I'm not doubting this with respect to Tomcat 4, as the main 
issues I have run across may be largely Cocoon II specific, unfortunately 
currently profiling  problems mean that I'm going round the houses a 
little to pin this one down.  However, as I indicated in my earlier email,
  I have tested substituting th java.io.File.getCanonicalPath() method with 
a caching version and found a very visible speedup which confirms that 
getCanonicalPath is an issue somewhere in this Tomcat 4 / Cocoon II 
combination.

Stuart.


-------------------------------------------------------------------------
Stuart Roebuck                                  [EMAIL PROTECTED]
Lead Developer                               Java, XML, MacOS X, XP, etc.
ADOLOS                                           <http://www.adolos.com/>

Reply via email to