harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Deven You <devyo...@gmail.com>
Subject Re: Security Performance issue
Date Sat, 24 Jul 2010 11:35:44 GMT
I am not sure which classes are loaded during the Security.getProvider() for
both harmony and RI, and I found another interesting thing that is  the time
spent on Class.newInstance() on both harmony and RI are almost the same
though the time on the Class.forName() are different so much.

2010/7/24 Deven You <devyoudw@gmail.com>

> Hi Tim
> Actually I mean Class.forName() in theSecurity.getProvider() invocation
> stack. So I can be sure our security implementation loads much more classes
> than RI's one. Thanks for your question, I think on the above mail I talked
> so generally.
>
> 2010/7/24 Tim Ellison <t.p.ellison@gmail.com>
>
> On 22/Jul/2010 11:42, Deven You wrote:
>> > Profiling results show RI's Class.forName() takes much less time than
>> > Harmony ones. It may caused by harmony load too much classes, maybe we
>> need
>> > consider load providers only needed.
>>
>> You mean "Class.forName()" loading the same class (i.e. the time to
>> search and load a given class), or are you talking about the load/init
>> time for BouncyCastle's providers compared to the RI providers?
>>
>> Regards,
>> Tim
>>
>> > 2010/7/22 Regis <xu.regis@gmail.com>
>> >
>> >> On 2010-07-22 14:26, Ray Chen wrote:
>> >>
>> >>> Hi Regis,
>> >>> You mean init these providers is slow, right? But actually we should
>> >>> not init unnecessary providers.
>> >>>
>> >>> I added some info in our code as following and you can see init these
>> >>> provider takes most of the time:
>> >>> <code>
>> >>> ...
>> >>> long start = System.currentTimeMillis();
>> >>> p = (Provider) Class.forName(providerClassName.trim(), true,
>> >>> cl).newInstance();
>> >>> System.out.println("init " + p.getName() + "takes " +
>> >>> (System.currentTimeMillis()-start) + " ms");
>> >>> providers.add(p);
>> >>> providersNames.put(p.getName(), p);
>> >>> long start2 = System.currentTimeMillis();
>> >>> initServiceInfo(p);
>> >>> System.out.println("init services of " + p.getName() + "takes " +
>> >>> (System.currentTimeMillis() - start2) + " ms" );
>> >>> ...
>> >>> </code>
>> >>>
>> >>> And the output is:
>> >>> init DRLCertFactorytakes 226 ms
>> >>> init services of DRLCertFactorytakes 6 ms
>> >>> init Cryptotakes 1 ms
>> >>> init services of Cryptotakes 1 ms
>> >>> init HarmonyJSSEtakes 0 ms
>> >>> init services of HarmonyJSSEtakes 1 ms
>> >>> init BCtakes 204 ms
>> >>> init services of BCtakes 11 ms
>> >>>
>> >>>
>> >>> On Thu, Jul 22, 2010 at 2:01 PM, Regis<xu.regis@gmail.com>  wrote:
>> >>>
>> >> init DRLCertFactorytakes 226 ms
>> >> init BCtakes 204 ms
>> >>
>> >> It seems provider itself spent a lot of time.
>> >>
>> >> Have you compared time of following code against RI and Harmony with
>> the
>> >> same provider class name?
>> >>
>> >>
>> >> (Provider) Class.forName(providerClassName.trim(), true,
>> cl).newInstance();
>> >>
>> >> If there were still huge gaps, I think it's not caused by way we load
>> >> providers, maybe there are other performance hole in some places. I
>> agree
>> >> that the way loading providers still have room to improve, but we need
>> to
>> >> find out and shoot the most outstanding issue first.
>> >>
>> >>
>> >>
>> >> --
>> >> Best Regards,
>> >> Regis.
>> >>
>> >
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message