Skip to content

Instantly share code, notes, and snippets.

@SergejIsbrecht
Last active September 6, 2020 22:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save SergejIsbrecht/e56d453b4adea8bc6aa5fdc90b6fb22b to your computer and use it in GitHub Desktop.
Save SergejIsbrecht/e56d453b4adea8bc6aa5fdc90b6fb22b to your computer and use it in GitHub Desktop.
EnumSet
sergej@sergej-P50:~/Development/IdeaProjects/playground$ /home/sergej/.sdkman/candidates/java/13.0.1.hs-adpt/bin/java -version
openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment AdoptOpenJDK (build 13.0.1+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 13.0.1+9, mixed mode, sharing)
sergej@sergej-P50:~/Development/IdeaProjects/playground$ uname -a
Linux sergej-P50 4.18.0-25-generic #26-Ubuntu SMP Mon Jun 24 09:32:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
jol >> java.util.RegularEnumSet, size=1584
jol >> org.eclipse.collections.impl.set.mutable.UnifiedSet, size=976
jol >> org.eclipse.collections.impl.set.immutable.ImmutableUnifiedSet, size=992
@Test
void set() {
EnumSet<V> jdkEnumSet = EnumSet.allOf(V.class);
measureJol(jdkEnumSet);
MutableSet<V> ecMutableSet = Sets.mutable.of(V.values());
measureJol(ecMutableSet);
ImmutableSet<V> immutableSet = Sets.immutable.of(V.values());
measureJol(immutableSet);
}
enum V {
MY_VALUE_1,
MY_VALUE_2,
MY_VALUE_3,
MY_VALUE_4,
MY_VALUE_5,
MY_VALUE_6,
MY_VALUE_7,
MY_VALUE_8,
MY_VALUE_9,
MY_VALUE_10,
}
private static void measureJol(Object o) {
long memory = GraphLayout.parseInstance(o).totalSize();
System.out.printf("jol >> %s, size=%d%n", o.getClass().getCanonicalName(), memory);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment