harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Regis <xu.re...@gmail.com>
Subject Re: [classlib] performance of java.io.File
Date Mon, 16 Mar 2009 07:59:59 GMT
陈磊 wrote:
> Great.   I remember that FileInputStream's constructor also has  performance
> problem. Maybe it was caused by the same reason.

I guess so. Default, there is no SecurityManager installed, the gap with 
RI is not so huge, but still slow five times, need to be optimized.

> 
> On Mon, Mar 16, 2009 at 3:33 PM, Regis <xu.regis@gmail.com> wrote:
> 
>> Regis wrote:
>>
>>> Hi all,
>>>
>>> Recently I found our java.io.File implementation is obviously slower than
>>> RI on Windows, especially when a SecurityManager is installed.
>>>
>>> Testing with following simple test case:
>>>
>>>        File file = new File("FilePerTest.java");
>>>        long start = System.currentTimeMillis();
>>>        for (int i = 0; i < 40000; ++i) {
>>>            file.isFile();
>>>            file.exists();
>>>            file.canRead();
>>>        }
>>>        long end = System.currentTimeMillis();
>>>
>>> hy without SecuirtyManager    ri without SecuirtyManager
>>> 6766ms                1203ms
>>>
>>> after installing a SecuirtyManager
>>> System.setSecurityManager(new SecurityManager());
>>>
>>> hy with SecuirtyManager        ri with SecuirtyManager
>>> 54406ms                4078ms
>>>
>>> We can see the gap is huge. After some investigations, I found two
>>> problems in Harmony implemenation:
>>>
>>> 1. Harmony used File.getCanonicalPath() in FilePermission, which is very
>>> slow. Because if a SecurityManager was installed, every file operation would
>>> be check by FilePermission, that cause the huge gap (54406ms compare to
>>> 4078ms).
>>>
>>> 2. in file native code file.c, ioh_convertToPlatform is called by every
>>> method which "convert all separators to the proper platform separator and
>>> remove duplicates on non POSIX platforms." (copied from comment of method),
>>> that is exactly what File.fixSlashes did, I think they are duplicated.
>>>
>>> I have created a JIRA HARMONY-6116 to track this issue, and sub-task
>>> HARMONY-6117 for 1. A prototype patch already attach to HARMONY-6117, your
>>> comments and suggestions are welcome.
>>>
>>>  After patch HARMONY-6117, I got a great improvement when installed a
>> SecuirtyManager:
>>
>> hy:                     49922ms
>> hy with patch:          15547ms
>> ri:                     4250ms
>>
>> --
>> Best Regards,
>> Regis.
>>
> 
> 
> 


-- 
Best Regards,
Regis.

Mime
View raw message