RFR: 8236641: Improve Set.of(...).iterator() warmup characteristics
Florian Weimer
fweimer at redhat.com
Thu Jan 16 10:20:43 UTC 2020
* Claes Redestad:
> we're doing plenty of iterations over Set.of() instances during
> bootstrap, which makes these operations show up prominently in
> startup profiles. This patch refactors a few hot methods to get a
> measureable startup improvement without regressing on targeted
> microbenchmarks.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8236641
> Webrev: http://cr.openjdk.java.net/~redestad/8236641/open.00/
>
> (The patch is baselined against 8236850)
Would it be possible to replace
idx = SALT % elements.length;
idx = (SALT % (table.length >> 1)) << 1;
with this?
idx = (int) ((elements.length * (long) SALT) >>> 32);
idx = (int) (((table.length >> 1) * (long) SALT) >>> 31);
A long multiplication followed by a shift should be faster than an int
modulo.
See this thread for some background:
<https://mail.openjdk.java.net/pipermail/hotspot-dev/2019-November/040011.html>
Thanks,
Florian
More information about the core-libs-dev
mailing list