mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
a4d29fef6a
Speaking with Amaranth, his point of his implementation was that most of the lookups are on loaded chunks, so that code is optimized for that case. While Long2Object should be faster as a general purpose map, for MC uses, Amaranth's version should be faster. Will try to benchmark the 2 at some future.
31 lines
No EOL
1.5 KiB
Diff
31 lines
No EOL
1.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 30 Mar 2016 02:13:24 -0400
|
|
Subject: [PATCH] Use FastUtil Int HashMap for DataWatcher
|
|
|
|
For DataWatcher, swap out plain Integer key HashMap for a Int2ObjectOpenHashMap
|
|
|
|
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/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<Class<? extends Entity>, Integer> a = Maps.newHashMap();
|
|
private final Entity b;
|
|
- private final Map<Integer, DataWatcher.Item<?>> c = Maps.newHashMap();
|
|
+ private final Map<Integer, DataWatcher.Item<?>> c = new Int2ObjectOpenHashMap<>(); // Paper
|
|
private final ReadWriteLock d = new ReentrantReadWriteLock();
|
|
private boolean e = true;
|
|
private boolean f;
|
|
--
|