> Avoid expensive `Class.forName` call when constructing Providers such as > `SecureRandom` which take constructor parameters. This can easily be cached > in EngineDescription (this cache already existed before, it was removed in > [JDK-8280970](https://bugs.openjdk.org/browse/JDK-8280970) as unused, I'm > bringing it back unchanged to support this new usage). > > Benchmark results on my Linux x86 host show around a 20% reduction in time to > create a new `SecureRandom` instance. Most of the remaining overhead is due > to a failing constructor lookup - see > [JDK-8324648](https://bugs.openjdk.org/browse/JDK-8324648). > > > Before > newSecureRandom avgt 2930 ± 50 ns/op > > After > newSecureRandom avgt 2400 ± 33 ns/op > > > I have seen multiple real-world applications which call `new SecureRandom()` > on the hot path, so I believe efficiency here is important.
Oli Gillespie has updated the pull request incrementally with two additional commits since the last revision: - Rename newSecureRandom -> create - Add copyright header to new file ------------- Changes: - all: https://git.openjdk.org/jdk/pull/17559/files - new: https://git.openjdk.org/jdk/pull/17559/files/93f0cc7f..8d8f2d0b Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=17559&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=17559&range=00-01 Stats: 25 lines in 1 file changed: 24 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jdk/pull/17559.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/17559/head:pull/17559 PR: https://git.openjdk.org/jdk/pull/17559