A typical call to `new SecureRandom()` is slowed down by looking for a 
constructor in NativePRNG which takes `java.security.SecureRandomParameters`. 
NativePRNG does not have such a constructor, so the search fails 
[here](https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/security/Provider.java#L1951-L1957),
 incurring all the cost of the lookup and creating a subsequent exception.

Creating a dummy constructor which takes and ignores this parameter will speed 
up `new SecureRandom()` calls significantly. 

The benchmark from https://github.com/openjdk/jdk/pull/17559 shows around 80% 
reduction in time taken to create a new SecureRandom with NativePRNG (default 
on my machine).


Before

SecureRandomBench.newSecureRandom  avgt  2930 +- 50 ns/op

After

SecureRandomBench.newSecureRandom  avgt  510 +- 16 ns/op

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

Commit messages:
 - 8324648: Avoid NoSuchMethodError when instantiating NativePRNG

Changes: https://git.openjdk.org/jdk/pull/17560/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=17560&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8324648
  Stats: 15 lines in 1 file changed: 15 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/jdk/pull/17560.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/17560/head:pull/17560

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

Reply via email to