File.isFile() is incredibly slow on MacOS
-----------------------------------------

                 Key: JRUBY-2914
                 URL: http://jira.codehaus.org/browse/JRUBY-2914
             Project: JRuby
          Issue Type: Improvement
          Components: Performance
    Affects Versions: JRuby 1.1.3
         Environment: MacOS Leopard 10.5, JVM 1.5 and 1.6 from Apple
            Reporter: Greg Fodor
         Attachments: load_service.diff

Doing some thread dumps revealed that the calls to File.isFile() inside of 
LoadService is incredibly slow on MacOS Leopard. By removing these calls and 
using a cache of the result, performance using railgun for startup (loading 
gems, etc.) improved by 75% or so. We should probably do a TTL cache of these 
bits or alternatively take another approach to determining if the path points 
to a real file. 

The bottleneck in the thread dump is the canonicalPath call, I found this:

http://lists.apple.com/archives/Java-dev/2001/Jun/msg01013.html

Which may or may not be relevant, since it's so long ago. 

I've attached a patch against 1.1.3 that uses a static cache but this isn't 
ideal obviously since it will be stale and also doesn't improve the initial 
startup time. There are also other places were File.isFile is likely being 
called, this too may be worth fixing.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to