On Tue, 12 Apr 2022 11:28:12 GMT, Daniel Jeliński <djelin...@openjdk.org> wrote:

> During TLS handshake, hundreds of constraints are evaluated to determine 
> which cipher suites are usable. Most of the evaluations are performed using 
> `HandshakeContext#algorithmConstraints` object. By default that object 
> contains a `SSLAlgorithmConstraints` instance wrapping another 
> `SSLAlgorithmConstraints` instance. As a result the constraints defined in 
> `SSLAlgorithmConstraints` are evaluated twice.
> 
> This PR improves the default case; if the user-specified constraints are left 
> at defaults, we use a single `SSLAlgorithmConstraints` instance, and avoid 
> duplicate checks.

Results of the attached benchmark:
Before:

Benchmark                 (resume)  (tlsVersion)   Mode  Cnt     Score     
Error  Units
SSLHandshake.doHandshake      true       TLSv1.2  thrpt    5  1407.320 ± 
302.562  ops/s
SSLHandshake.doHandshake      true           TLS  thrpt    5   391.037 ±  
13.014  ops/s
SSLHandshake.doHandshake     false       TLSv1.2  thrpt    5   280.003 ±  
69.273  ops/s
SSLHandshake.doHandshake     false           TLS  thrpt    5   233.401 ±   
9.371  ops/s


After:

Benchmark                 (resume)  (tlsVersion)   Mode  Cnt     Score     
Error  Units
SSLHandshake.doHandshake      true       TLSv1.2  thrpt    5  2267.325 ± 
119.800  ops/s
SSLHandshake.doHandshake      true           TLS  thrpt    5   490.465 ±  
24.698  ops/s
SSLHandshake.doHandshake     false       TLSv1.2  thrpt    5   340.275 ±  
72.833  ops/s
SSLHandshake.doHandshake     false           TLS  thrpt    5   271.656 ±   
5.444  ops/s


The results show a nice double-digit improvement across the board.

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

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

Reply via email to