On Wed, 26 Jun 2024 13:02:51 GMT, Jan Lahoda <jlah...@openjdk.org> wrote:

>> test/micro/org/openjdk/bench/java/lang/runtime/SwitchEnum.java line 57:
>> 
>>> 55:         for (E e : inputs) {
>>> 56:             sum += switch (e) {
>>> 57:                 case null -> -1;
>> 
>> As this `null` case adds a case relative to the `-Traditional` test then 
>> maybe removing one of the `E0, E1, ...` cases would make the test a little 
>> bit more apples-to-apples?
>
> Using `case null -> ` will push javac to use the new code, but all switches 
> do some kind of null check for the selector value. The difference is that if 
> there's no `case null`, there will be `Objects.requireNonNull` generated for 
> the selector value (which will throw an NPE if the value is `null`), while 
> here it will jump to the given case.
> 
> So, `case null` does not have the same weight as a normal case, so I don't 
> think it would be fair to remove a full case to compensate for it.

Fair enough, and I guess ~1.6ns/op is reasonable overhead for the added 
semantics.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19906#discussion_r1655364063

Reply via email to