On Mon, 15 Apr 2024 22:12:30 GMT, Volodymyr Paprotski <d...@openjdk.org> wrote:

>> Performance. Before:
>> 
>> Benchmark                        (algorithm)  (dataSize)  (keyLength)  
>> (provider)   Mode  Cnt     Score    Error  Units
>> SignatureBench.ECDSA.sign    SHA256withECDSA        1024          256        
>>       thrpt    3  6443.934 ±  6.491  ops/s
>> SignatureBench.ECDSA.sign    SHA256withECDSA       16384          256        
>>       thrpt    3  6152.979 ±  4.954  ops/s
>> SignatureBench.ECDSA.verify  SHA256withECDSA        1024          256        
>>       thrpt    3  1895.410 ± 36.979  ops/s
>> SignatureBench.ECDSA.verify  SHA256withECDSA       16384          256        
>>       thrpt    3  1878.955 ± 45.487  ops/s
>> Benchmark                                            (algorithm)  
>> (keyLength)  (kpgAlgorithm)  (provider)   Mode  Cnt     Score    Error  Units
>> o.o.b.j.c.full.KeyAgreementBench.EC.generateSecret          ECDH          
>> 256              EC              thrpt    3  1357.810 ± 26.584  ops/s
>> o.o.b.j.c.small.KeyAgreementBench.EC.generateSecret         ECDH          
>> 256              EC              thrpt    3  1352.119 ± 23.547  ops/s
>> Benchmark                          (isMontBench)   Mode  Cnt     Score    
>> Error  Units
>> PolynomialP256Bench.benchMultiply          false  thrpt    3  1746.126 ± 
>> 10.970  ops/s
>> 
>> Performance, no intrinsic:
>> 
>> Benchmark                        (algorithm)  (dataSize)  (keyLength)  
>> (provider)   Mode  Cnt     Score     Error  Units
>> SignatureBench.ECDSA.sign    SHA256withECDSA        1024          256        
>>       thrpt    3  6529.839 ±  42.420  ops/s
>> SignatureBench.ECDSA.sign    SHA256withECDSA       16384          256        
>>       thrpt    3  6199.747 ± 133.566  ops/s
>> SignatureBench.ECDSA.verify  SHA256withECDSA        1024          256        
>>       thrpt    3  1973.676 ±  54.071  ops/s
>> SignatureBench.ECDSA.verify  SHA256withECDSA       16384          256        
>>       thrpt    3  1932.127 ±  35.920  ops/s
>> Benchmark                                            (algorithm)  
>> (keyLength)  (kpgAlgorithm)  (provider)   Mode  Cnt     Score    Error  Units
>> o.o.b.j.c.full.KeyAgreementBench.EC.generateSecret          ECDH          
>> 256              EC              thrpt    3  1355.788 ± 29.858  ops/s
>> o.o.b.j.c.small.KeyAgreementBench.EC.generateSecret         ECDH          
>> 256              EC              thrpt    3  1346.523 ± 28.722  ops/s
>> Benchmark                          (isMontBench)   Mode  Cnt     Score    
>> Error  Units
>> PolynomialP256Bench.benchMultiply           true  thrpt    3  1919.57...
>
> Volodymyr Paprotski has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Comments from Jatin and Tony

src/java.base/share/classes/sun/security/ec/ECOperations.java line 204:

> 202:      * @return the product
> 203:      */
> 204:     public MutablePoint multiply(AffinePoint affineP, byte[] s) {

It seems like there could be some combining of both `multiply()`.  If 
`multiply(AffinePoint, ...)` is called, it can call `DefaultMultiplier` with 
the `affineP`, but internally call the other `multiply(ECPoint, ...)` for the 
other situations.  I'd rather not have two methods doing most of the same code, 
but different methods.

src/java.base/share/classes/sun/security/ec/ECOperations.java line 467:

> 465:     sealed static abstract class SmallWindowMultiplier implements 
> PointMultiplier
> 466:         permits DefaultMultiplier, DefaultMontgomeryMultiplier {
> 467:         private final AffinePoint affineP;

I don't think `affineP` needs to be a class variable anymore.  It's only used 
in the constructor

src/java.base/share/classes/sun/security/ec/ECOperations.java line 592:

> 590:         }
> 591: 
> 592:         private final ProjectivePoint.Immutable[][] points;

Can you define this at the top please.

src/java.base/share/classes/sun/security/ec/ECOperations.java line 668:

> 666:         }
> 667: 
> 668:         private final BigInteger[] base;

Can you define this at the top.  You use it in the constructor but it's defined 
later on.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/18583#discussion_r1576821201
PR Review Comment: https://git.openjdk.org/jdk/pull/18583#discussion_r1575499019
PR Review Comment: https://git.openjdk.org/jdk/pull/18583#discussion_r1575495263
PR Review Comment: https://git.openjdk.org/jdk/pull/18583#discussion_r1575491814

Reply via email to