diff options
| author | Krakenied <Krakenied1@gmail.com> | 2024-05-30 12:01:42 +0200 |
|---|---|---|
| committer | Leonardo Bishop <13875753+LMBishop@users.noreply.github.com> | 2024-06-03 18:48:22 +0100 |
| commit | 011fa31ef4a2f577bbe233959fc9cb255f549ce4 (patch) | |
| tree | b02ea3ae564269442c682742b0ca46e471a327f4 /common/src/main/java | |
| parent | 832e3e5376f07389b4a256538f439053b2ee9218 (diff) | |
Remove another unnecessary HashMap#containsKey call from hot path
Do not use Object2ObjectArrayMap as it doesn't seem to be enough performance-beneficial
Diffstat (limited to 'common/src/main/java')
| -rw-r--r-- | common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java | 47 |
1 files changed, 9 insertions, 38 deletions
diff --git a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java index e711ff67..0069eb12 100644 --- a/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java +++ b/common/src/main/java/com/leonardobishop/quests/common/player/questprogressfile/QuestProgressFile.java @@ -5,8 +5,6 @@ import com.leonardobishop.quests.common.plugin.Quests; import com.leonardobishop.quests.common.quest.Quest; import com.leonardobishop.quests.common.quest.Task; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -20,34 +18,7 @@ import java.util.concurrent.TimeUnit; */ public class QuestProgressFile { - private static final Constructor<?> optimizedMapCtor; - - static { - Class<?> optimizedMapClazz; - - try { - optimizedMapClazz = Class.forName("it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap"); - } catch (ClassNotFoundException ignored) { - optimizedMapClazz = HashMap.class; - } - - try { - optimizedMapCtor = optimizedMapClazz.getDeclaredConstructor(); - } catch (NoSuchMethodException e) { - throw new IllegalStateException(e); - } - } - - @SuppressWarnings("unchecked") - private static <K, V> Map<K, V> newOptimizedMapInstance() { - try { - return (Map<K, V>) optimizedMapCtor.newInstance(); - } catch (IllegalAccessException | InstantiationException | InvocationTargetException e) { - throw new IllegalStateException(e); - } - } - - private final Map<String, QuestProgress> questProgress = newOptimizedMapInstance(); + private final Map<String, QuestProgress> questProgress = new HashMap<>(); private final UUID playerUUID; private final Quests plugin; @@ -237,11 +208,8 @@ public class QuestProgressFile { * @return {@link QuestProgress} or a blank generated one if the quest does not exist */ public QuestProgress getQuestProgress(Quest quest) { - if (questProgress.containsKey(quest.getId())) { - return questProgress.get(quest.getId()); - } - generateBlankQuestProgress(quest); - return getQuestProgress(quest); + QuestProgress qProgress = questProgress.get(quest.getId()); + return qProgress != null ? qProgress : generateBlankQuestProgress(quest); } /** @@ -259,9 +227,10 @@ public class QuestProgressFile { * Generate a new blank {@link QuestProgress} for a specified {@code quest}. * * @param quest the quest to generate progress for + * @return the generated blank {@link QuestProgress} */ - public void generateBlankQuestProgress(Quest quest) { - generateBlankQuestProgress(quest, false); + public QuestProgress generateBlankQuestProgress(Quest quest) { + return generateBlankQuestProgress(quest, false); } /** @@ -269,8 +238,9 @@ public class QuestProgressFile { * * @param quest the quest to generate progress for * @param modified the modified state of the quest + * @return the generated blank {@link QuestProgress} */ - public void generateBlankQuestProgress(Quest quest, boolean modified) { + public QuestProgress generateBlankQuestProgress(Quest quest, boolean modified) { QuestProgress questProgress = new QuestProgress(plugin, quest.getId(), false, false, 0, playerUUID, false, 0, modified); for (Task task : quest.getTasks()) { TaskProgress taskProgress = new TaskProgress(questProgress, task.getId(), null, playerUUID, false, modified); @@ -278,6 +248,7 @@ public class QuestProgressFile { } addQuestProgress(questProgress); + return questProgress; } public void clear() { |
