Skip to content

Commit 5fe5a48

Browse files
committed
Use fastutil maps for holder lookups in Forge registry
1 parent 2d2bc94 commit 5fe5a48

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

forge/src/main/java/org/embeddedt/modernfix/forge/mixin/perf/forge_registry_alloc/ForgeRegistryMixin.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.embeddedt.modernfix.forge.mixin.perf.forge_registry_alloc;
22

3+
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
34
import net.minecraft.core.Holder;
45
import net.minecraft.resources.ResourceKey;
56
import net.minecraft.resources.ResourceLocation;
@@ -14,9 +15,11 @@
1415

1516
@Mixin(value = ForgeRegistry.class, remap = false)
1617
public abstract class ForgeRegistryMixin<V> {
17-
@Shadow @Final private Map<ResourceLocation, Holder.Reference<V>> delegatesByName;
18+
// Replace the backing maps with fastutil maps for a bit more speed, since value->holder lookups in particular
19+
// are a bottleneck in many areas (e.g. render type lookup)
20+
@Shadow @Final private Map<ResourceLocation, Holder.Reference<V>> delegatesByName = new Object2ObjectOpenHashMap<>();
1821

19-
@Shadow @Final private Map<V, Holder.Reference<V>> delegatesByValue;
22+
@Shadow @Final private Map<V, Holder.Reference<V>> delegatesByValue = new Object2ObjectOpenHashMap<>();
2023

2124
/**
2225
* @author embeddedt

0 commit comments

Comments
 (0)