ImmutableCollections.MapN optimisation ?
Martin Buchholz
martinrb at google.com
Sat Jun 30 15:39:39 UTC 2018
On Sat, Jun 30, 2018 at 3:54 AM, Remi Forax <forax at univ-mlv.fr> wrote:
> The other problem is more subtle, get() uses probe() and probe() uses an
> infinite loop and not a counted loop, the result is that c2 generates lot
> of assembly codes for probe() as a consequence it doesn't inline probe() in
> get() making get() really slow compared to HashMap.get() which is fully
> inlined.
> There are several wys to fix that:
> - you can try to transform the while(true) loop in probe into 2
> subsequents loops from idx to length + from 0 to idx.
>
In ArrayDeque we had success transforming loops into 2 nested loops, the
inner one being hotspot friendly, and it seems like the same approach would
work for probe().
E.g. look at ArrayDeque#contains
More information about the core-libs-dev
mailing list