papermc/Spigot-Server-Patches/0113-Use-Optimized-Collections.patch

52 lines
2.6 KiB
Diff
Raw Normal View History

2016-06-25 17:19:04 +00:00
From 988e969f0fee60fce649abdf4a2b4cd65df96c1f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 30 Mar 2016 02:13:24 -0400
Subject: [PATCH] Use Optimized Collections
Swap out CraftBukkit LongObjectHashMap with Long2ObjectOpenHashMap
Swap out Integer key HashMap for a Int2ObjectOpenHashMap For ChunkProviderServer
Amaranth, the creator of LongObjectHashMap, tested it vs fastutil and determined fastutil to be 3x faster
and could not create anything faster than fastutil.
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
2016-06-23 02:18:41 +00:00
index 36515cd..cc8602e 100644
--- a/src/main/java/net/minecraft/server/ChunkProviderServer.java
+++ b/src/main/java/net/minecraft/server/ChunkProviderServer.java
2016-06-23 02:18:41 +00:00
@@ -23,7 +23,7 @@ import org.bukkit.event.world.ChunkUnloadEvent;
2016-05-12 02:07:46 +00:00
public class ChunkProviderServer implements IChunkProvider {
2016-05-12 02:07:46 +00:00
private static final Logger a = LogManager.getLogger();
2016-06-09 03:57:14 +00:00
- public final Set<Long> unloadQueue = Sets.newHashSet();
2016-05-12 02:07:46 +00:00
+ public final it.unimi.dsi.fastutil.longs.LongSet unloadQueue = new it.unimi.dsi.fastutil.longs.LongArraySet(); // PAIL: private -> public // Paper
public final ChunkGenerator chunkGenerator;
private final IChunkLoader chunkLoader;
// Paper start
diff --git a/src/main/java/net/minecraft/server/DataWatcher.java b/src/main/java/net/minecraft/server/DataWatcher.java
2016-06-25 17:19:04 +00:00
index 47968a8..1f5e6c0 100644
--- a/src/main/java/net/minecraft/server/DataWatcher.java
+++ b/src/main/java/net/minecraft/server/DataWatcher.java
2016-06-25 17:19:04 +00:00
@@ -12,6 +12,7 @@ import java.util.Map;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
2016-05-12 02:07:46 +00:00
import javax.annotation.Nullable;
+import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; // Paper
import org.apache.commons.lang3.ObjectUtils;
2016-06-25 17:19:04 +00:00
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -21,7 +22,7 @@ public class DataWatcher {
private static final Logger a = LogManager.getLogger();
private static final Map<Class<? extends Entity>, Integer> b = Maps.newHashMap();
private final Entity c;
- private final Map<Integer, DataWatcher.Item<?>> d = Maps.newHashMap();
+ private final Map<Integer, DataWatcher.Item<?>> d = new Int2ObjectOpenHashMap<>(); // Paper
private final ReadWriteLock e = new ReentrantReadWriteLock();
private boolean f = true;
private boolean g;
--
2016-06-23 02:18:41 +00:00
2.9.0