Skip to content

Commit 589ee12

Browse files
authored
perf: avoid per-call lambda allocation in CachedPackage#getPackageClass (#3651)
1 parent 6cf7c7d commit 589ee12

1 file changed

Lines changed: 13 additions & 10 deletions

File tree

src/main/java/com/comphenix/protocol/utility/CachedPackage.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,23 @@ private Optional<Class<?>> resolveClass(String className) {
8888
* @throws RuntimeException If we are unable to find the given class.
8989
*/
9090
public Optional<Class<?>> getPackageClass(String className, String... aliases) {
91-
return cache.computeIfAbsent(className, x -> {
92-
Optional<Class<?>> clazz = resolveClass(className);
93-
if (clazz.isPresent()) {
94-
return clazz;
95-
}
91+
Optional<Class<?>> cached = cache.get(className);
92+
if (cached != null) {
93+
return cached;
94+
}
9695

96+
Optional<Class<?>> clazz = resolveClass(className);
97+
if (!clazz.isPresent()) {
9798
for (String alias : aliases) {
98-
clazz = resolveClass(alias);
99-
if (clazz.isPresent()) {
100-
return clazz;
99+
Optional<Class<?>> aliasClazz = resolveClass(alias);
100+
if (aliasClazz.isPresent()) {
101+
clazz = aliasClazz;
102+
break;
101103
}
102104
}
105+
}
103106

104-
return Optional.empty();
105-
});
107+
cache.put(className, clazz);
108+
return clazz;
106109
}
107110
}

0 commit comments

Comments
 (0)