From 3d19c5c2ad12ea9f8993efdfe10bfd1e96b624ec Mon Sep 17 00:00:00 2001 From: Hannes Greule Date: Mon, 8 Aug 2022 12:50:22 +0200 Subject: [PATCH] perf: avoid quadratic overhead for UUID collection (#3749) avoid quadratic overhead for UUID collection --- .../plotsquared/bukkit/BukkitPlatform.java | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java index d2da2fb2a..f249c1b5f 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitPlatform.java @@ -656,20 +656,15 @@ public final class BukkitPlatform extends JavaPlugin implements Listener, PlotPl final @NonNull SQLiteUUIDService sqLiteUUIDService, final @NonNull CacheUUIDService cacheUUIDService ) { - // Load all uuids into a big chunky boi queue - final Queue uuidQueue = new LinkedBlockingQueue<>(); + // Record all unique UUID's and put them into a queue + final Set uuidSet = new HashSet<>(); PlotSquared.get().forEachPlotRaw(plot -> { - final Set uuids = new HashSet<>(); - uuids.add(plot.getOwnerAbs()); - uuids.addAll(plot.getMembers()); - uuids.addAll(plot.getTrusted()); - uuids.addAll(plot.getDenied()); - for (final UUID uuid : uuids) { - if (!uuidQueue.contains(uuid)) { - uuidQueue.add(uuid); - } - } + uuidSet.add(plot.getOwnerAbs()); + uuidSet.addAll(plot.getMembers()); + uuidSet.addAll(plot.getTrusted()); + uuidSet.addAll(plot.getDenied()); }); + final Queue uuidQueue = new LinkedBlockingQueue<>(uuidSet); LOGGER.info("(UUID) {} UUIDs will be cached", uuidQueue.size());