RFR: 8294997: Improve ECC math operations

Daniel Jeliński djelinski at openjdk.org
Tue Oct 11 07:31:19 UTC 2022


This patch rewrites some BigInteger and curve point operations used in EC calculations:
- coefficient * 2^power is equivalent to coefficient << power
- number mod 2^n is equivalent to number & (2^n-1)
- pair of IntegerModuloP operations:
t2 = t1+t1
t1 = t1+t2
is equivalent to t1=t1*3, which is now implemented more efficiently.

Benchmarked the code using not-yet-merged benchmark from #10544. Results on x64 before:

Benchmark        (messageLength)   Mode  Cnt     Score   Error  Units
Signatures.sign               64  thrpt   15  1578.907 ± 1.522  ops/s

After:

Benchmark        (messageLength)   Mode  Cnt     Score   Error  Units
Signatures.sign               64  thrpt   15  1679.495 ± 3.883  ops/s

Greatest part of the improvement is related to ECOperations changes; BigInteger modifications provide only marginal gains (1584 ops/s without ECOperations changes).

Tier1-3 tests continue to pass.

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

Commit messages:
 - Remove commented out code
 - Simplify multiplication
 - Simplify mod
 - Simplify math
 - Remove biginteger modulo operation

Changes: https://git.openjdk.org/jdk/pull/10614/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10614&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8294997
  Stats: 50 lines in 6 files changed: 2 ins; 23 del; 25 mod
  Patch: https://git.openjdk.org/jdk/pull/10614.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10614/head:pull/10614

PR: https://git.openjdk.org/jdk/pull/10614



More information about the build-dev mailing list