From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 30 Mar 2016 02:13:24 -0400 Subject: [PATCH] Use FastUtil Long/Int HashMap's For DataWatcher, swap out plain Integer key HashMap for a Int2ObjectOpenHashMap For ChunkProviderServer, swap out CB's custom LongHashMap with Long2ObjectOpenHashMap These collections are super fast as seen http://java-performance.info/hashmap-overview-jdk-fastutil-goldman-sachs-hppc-koloboke-trove-january-2015/ diff --git a/src/main/java/net/minecraft/server/ChunkProviderServer.java b/src/main/java/net/minecraft/server/ChunkProviderServer.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/ChunkProviderServer.java +++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java @@ -0,0 +0,0 @@ import java.util.Iterator; import java.util.List; import com.destroystokyo.paper.exception.ServerInternalException; +import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap; // Paper import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -0,0 +0,0 @@ public class ChunkProviderServer implements IChunkProvider { private final IChunkLoader chunkLoader; // Paper start protected Chunk lastChunkByPos = null; - public LongObjectHashMap chunks = new LongObjectHashMap() { + public Long2ObjectOpenHashMap chunks = new Long2ObjectOpenHashMap() { @Override public Chunk get(long key) { if (lastChunkByPos != null && key == lastChunkByPos.chunkKey) { diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/server/DataWatcher.java +++ b/src/main/java/net/minecraft/server/DataWatcher.java @@ -0,0 +0,0 @@ import java.util.List; import java.util.Map; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; + +import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; // Paper import org.apache.commons.lang3.ObjectUtils; public class DataWatcher { private static final Map, Integer> a = Maps.newHashMap(); private final Entity b; - private final Map> c = Maps.newHashMap(); + private final Map> c = new Int2ObjectOpenHashMap<>(); // Paper private final ReadWriteLock d = new ReentrantReadWriteLock(); private boolean e = true; private boolean f; --