> Hi, > > Please review this performance improvement for Secp256R1 implementation in > OpenJDK. With this update, there is an about 20% performance improvement for > Secp256R1 key generation and signature. > > Basically, 256 bits EC curves could use 9 integer limbs for the computation. > The current implementation use 10 limbs instead. By reducing the number of > limbs, the implementation could benefit from less integer computation > (add/sub/multiply/square/inverse/mod/pow, etc), and thus improve the > performance. > > Here are the benchmark numbers without the patch: > > Benchmark (messageLength) Mode Cnt Score Error Units > Signatures.sign 64 thrpt 15 1.414 ± 0.022 ops/ms > Signatures.sign 512 thrpt 15 1.418 ± 0.004 ops/ms > Signatures.sign 2048 thrpt 15 1.419 ± 0.005 ops/ms > Signatures.sign 16384 thrpt 15 1.395 ± 0.003 ops/ms > > KeyGenerators.keyPairGen thrpt 15 1.475 ± 0.043 ops/ms > > > And here are the numbers with the patch applied: > > Benchmark (messageLength) Mode Cnt Score Error Units > ECSignature.sign 64 thrpt 15 1.719 ± 0.010 ops/ms > ECSignature.sign 512 thrpt 15 1.704 ± 0.012 ops/ms > ECSignature.sign 2048 thrpt 15 1.699 ± 0.018 ops/ms > ECSignature.sign 16384 thrpt 15 1.681 ± 0.006 ops/ms > > KeyGenerators.keyPairGen thrpt 15 1.881 ± 0.008 ops/ms > > > Thanks, > Xuelei
Xue-Lei Andrew Fan has updated the pull request incrementally with one additional commit since the last revision: set maxadds ------------- Changes: - all: https://git.openjdk.org/jdk/pull/10398/files - new: https://git.openjdk.org/jdk/pull/10398/files/a9ec1b03..59e4818b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=10398&range=03 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=10398&range=02-03 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/10398.diff Fetch: git fetch https://git.openjdk.org/jdk pull/10398/head:pull/10398 PR: https://git.openjdk.org/jdk/pull/10398