[jboss-dev] Further profling: Where should I focus?

Bill Burke bburke at redhat.com
Tue Jan 5 15:24:11 EST 2010



John Bailey wrote:
> I have been running the tests through JProfiler.  Not sure if I just have not optimized the profilers settings, but I am getting numbers all over the board, and some are well over double the time of a JUnit execution.  The non-profiler time to run the test seems to be <300ms.
> 
> With the profiler enable, I can see ~30% of the total time is in the VFS.mountZip call.  With >10% of the total test time taken up by the 5,085 calls to org.jboss.vfs.util.PathTokenizer.getTokens.  
> 
> The org.jboss.classloading.plugins.vfs.PackageVisitor.determineAllPackages call is taking ~35% of the total test time to run.  With ~14% of the total test time in VirutalFile.isDirectory. 
> 

Ya, JProfiler is all over the place for me too.

I did currentTimeMillis() timing  VFS init took 179/252ms if I don't do 
children recursive mount.  420/456ms if I do do recursive child mount. 
(Maybe children are getting initialized/cached or something with the 
recursive child mount).


> Maybe there is room for more caching of this isDirectory like calls.  There may be a problem with caching the info as the actual file system can change for a given VirutalFile, and the cached information is not guaranteed to remain accurate.  
> 

Should be fine to cache for a jar?  VirtualFile could ask the FileSystem 
if its cacheable or not.

Or, even better, you could have parallel non-cached getters that could 
be used by sensitive logic (like a deploy/ directory scanner).  If a 
non-cached getter detects a new value, it invalidates the entire cache.

i.e.


Bill

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com



More information about the jboss-development mailing list