RFR: 8291966: SwitchBootstrap.typeSwitch could be faster

Thiago Henrique Hüpner duke at openjdk.org
Tue Aug 9 11:01:21 UTC 2022


On Tue, 9 Aug 2022 10:28:02 GMT, Jan Lahoda <jlahoda at openjdk.org> wrote:

> > Would it be possible to add a special case where the labels are all the same type? Like all labels are Class.class or Object.class? While testing out the pattern matching, I've found myself doing the following
> > ```java
> > switch (o) {
> >     case Class<?> c when c == Object.class -> {}
> >     case Class<?> c when c == Integer.class -> {}
> >     case Class<?> c when c == String.class -> {}
> >     case Class<?> c when c == Double.class -> {}
> >     // ...
> > }
> > ```
> 
> I think that there may eventually be some improvements, although the current round of patches is not intended to improve this pattern, sorry. Also, I would not expect better behavior that a sequence of ifs.

If it eventually gets the same speed as a sequence of ifs, it would be great for me. Right now it is much slower. However, do you think it would be good to track this pattern or should the javac simplify the code generation to not use `SwitchBootstrap.typeSwitch` in this case?

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

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


More information about the core-libs-dev mailing list