mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-30 12:11:47 +01:00
928bcc8d3a
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 09943450 Update SnakeYAML version 5515734f SPIGOT-7162: Incorrect description for Entity#getVehicle javadoc 6f82b381 PR-788: Add getHand() to all relevant events CraftBukkit Changes: aaf484f6f SPIGOT-7163: CraftMerchantRecipe doesn't copy demand and specialPrice from BukkitMerchantRecipe 5329dd6fd PR-1107: Add getHand() to all relevant events 93061706e SPIGOT-7045: Ocelots never spawn with babies with spawn reason OCELOT_BABY
40 lines
2.7 KiB
Diff
40 lines
2.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sun, 26 Aug 2018 20:49:50 -0400
|
|
Subject: [PATCH] Optimize MappedRegistry
|
|
|
|
Use larger initial sizes to increase bucket capacity on the BiMap
|
|
|
|
BiMap.get was seen to be using a good bit of CPU time.
|
|
|
|
diff --git a/src/main/java/net/minecraft/core/MappedRegistry.java b/src/main/java/net/minecraft/core/MappedRegistry.java
|
|
index db530be96664fc45c881f7438c739109a0aace75..3ef5d440fd3ce209110543bfd36569e846a5b749 100644
|
|
--- a/src/main/java/net/minecraft/core/MappedRegistry.java
|
|
+++ b/src/main/java/net/minecraft/core/MappedRegistry.java
|
|
@@ -37,13 +37,11 @@ import org.slf4j.Logger;
|
|
public class MappedRegistry<T> extends WritableRegistry<T> {
|
|
private static final Logger LOGGER = LogUtils.getLogger();
|
|
private final ObjectList<Holder.Reference<T>> byId = new ObjectArrayList<>(256);
|
|
- private final Object2IntMap<T> toId = Util.make(new Object2IntOpenCustomHashMap<>(Util.identityStrategy()), (object2IntOpenCustomHashMap) -> {
|
|
- object2IntOpenCustomHashMap.defaultReturnValue(-1);
|
|
- });
|
|
- private final Map<ResourceLocation, Holder.Reference<T>> byLocation = new HashMap<>();
|
|
- private final Map<ResourceKey<T>, Holder.Reference<T>> byKey = new HashMap<>();
|
|
- private final Map<T, Holder.Reference<T>> byValue = new IdentityHashMap<>();
|
|
- private final Map<T, Lifecycle> lifecycles = new IdentityHashMap<>();
|
|
+ private final it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap<T> toId = new it.unimi.dsi.fastutil.objects.Reference2IntOpenHashMap<T>(2048);// Paper - use bigger expected size to reduce collisions and direct intent for FastUtil to be identity map
|
|
+ private final Map<ResourceLocation, Holder.Reference<T>> byLocation = new HashMap<>(2048); // Paper - use bigger expected size to reduce collisions
|
|
+ private final Map<ResourceKey<T>, Holder.Reference<T>> byKey = new HashMap<>(2048); // Paper - use bigger expected size to reduce collisions
|
|
+ private final Map<T, Holder.Reference<T>> byValue = new IdentityHashMap<>(2048); // Paper - use bigger expected size to reduce collisions
|
|
+ private final Map<T, Lifecycle> lifecycles = new IdentityHashMap<>(2048); // Paper - use bigger expected size to reduce collisions
|
|
private Lifecycle elementsLifecycle;
|
|
private volatile Map<TagKey<T>, HolderSet.Named<T>> tags = new IdentityHashMap<>();
|
|
private boolean frozen;
|
|
@@ -63,6 +61,7 @@ public class MappedRegistry<T> extends WritableRegistry<T> {
|
|
this.intrusiveHolderCache = new IdentityHashMap<>();
|
|
}
|
|
|
|
+ this.toId.defaultReturnValue(-1); // Paper
|
|
}
|
|
|
|
private List<Holder.Reference<T>> holdersInOrder() {
|