On Sat, 29 Jan 2022 05:31:08 GMT, Xue-Lei Andrew Fan <xue...@openjdk.org> wrote:

>> src/java.base/share/classes/javax/net/ssl/SSLParameters.java line 763:
>> 
>>> 761: 
>>> 762:         String[] tempSchemes = signatureSchemes.clone();
>>> 763:         for (String scheme : tempSchemes) {
>> 
>> In addition to this loop we could also parse/decompose the strings. This 
>> would do the work only once (if the parameter is reused)
>
> If we want to reuse the result, we may have to cache something.  It is not 
> good to me.  The parsing of the signature scheme names actually depends on 
> the provider.  So at this point, in the Java SE API specification, it is not 
> easy to know how to parse the strings to me.

Yes you are right, it would require a setter where the provider can register 
the resolved array into the parameter instance (if we need to support multiple 
providers). But it would be a good optimization assuming clients keep the 
parameters around in a frequent Connection scenario.

>> src/java.base/share/classes/sun/security/ssl/SSLConfiguration.java line 262:
>> 
>>> 260:         }   // otherwise, use the default values
>>> 261: 
>>> 262:         String[] ss = params.getSignatureSchemes();
>> 
>> If we don’t use the cloning getter here (and use the pre-parsed list) it 
>> would be more efficient.
>
> Yes.  Array copy is a concern of mine, too.  Hopefully, the frozen array 
> feature could help address the array copy issues in the future.

Hmm.. I guess the different packages make it really hard to have an internal 
optimized getter. What about a single concatenated string, it would be 
immutable „sig1,sig2“..

>> src/java.base/share/classes/sun/security/ssl/SignatureScheme.java line 439:
>> 
>>> 437:                     (config.signatureSchemes == null ||
>>> 438:                         config.signatureSchemes.length == 0 ||
>>> 439:                         Arrays.asList(config.signatureSchemes)
>> 
>> Is that a allocation per handshake*availablesize?
>
> Yes, it does.  Do you like to use a for-loop, without new object allocation?

Yes, static helper

-------------

PR: https://git.openjdk.java.net/jdk/pull/7252

Reply via email to