RFR: 8302818: Optimize wrapper sets and immutable sets of Enums [v2]
liach
duke at openjdk.org
Mon Feb 20 13:19:30 UTC 2023
On Mon, 20 Feb 2023 13:15:03 GMT, Tingjun Yuan <duke at openjdk.org> wrote:
>> Currently, the two subclasses of `java.util.EnumSet` optimize bulk operations when the argument is also a `EnumSet`, but there is no such optimization for wrapper sets (returned by `Collections.unmodifiableSet`, `Collections.synchronizedSet`, etc.) and immutable sets (returned by `Set.of` methods) of `Enum`s.
>>
>> This PR introduces optimization classes for these situations. No public APIs are changed.
>
> Tingjun Yuan has updated the pull request incrementally with one additional commit since the last revision:
>
> Optimize `EnumSet.copyOf` and `Set.copyOf`
src/java.base/share/classes/java/util/EnumSet.java line 186:
> 184: } else {
> 185: while (i.hasNext())
> 186: result.add(i.next());
Can't we just use addAll in all cases?
src/java.base/share/classes/java/util/Set.java line 742:
> 740: E e1 = it.next();
> 741: if (!it.hasNext()) {
> 742: return Set.of(e0, e1);
Bad change, doesn't handle e0.equals(e1), and this is getting beyond the original issue
-------------
PR: https://git.openjdk.org/jdk/pull/12498
More information about the core-libs-dev
mailing list