> 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 one additional commit since the last revision: Use class literals instead of forName ------------- Changes: - all: https://git.openjdk.org/jdk/pull/17559/files - new: https://git.openjdk.org/jdk/pull/17559/files/8d8f2d0b..45da78f9 Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=17559&range=02 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=17559&range=01-02 Stats: 27 lines in 1 file changed: 4 ins; 11 del; 12 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