1
在探索的Java EnumSet,我碰到凸輪2 包私人類,爲什麼EnumSet使用不同大小的RegularEnumSet和JumboEnumSet。它對性能有什麼影響?
- RegularEnumSet
- JumboEnumSet
從EnumSet來源:
if (universe.length <= 64)
return new RegularEnumSet<>(elementType, universe);
else
return new JumboEnumSet<>(elementType, universe);
而且RegularE numSet構造是這樣的:
RegularEnumSet(Class<E>elementType, Enum[] universe) {
super(elementType, universe);
}
而在JumboEnumSet構造的情況下是:
JumboEnumSet(Class<E>elementType, Enum[] universe) {
super(elementType, universe);
elements = new long[(universe.length + 63) >>> 6];
}
所以我的疑惑是:
爲什麼它採用根據不同的EnumSet大小如何影響 的表現?
使用元素數組的JumboEnumSet背後的邏輯是什麼?