geforkt von Mirrors/Paper
b62dfa0bf9
Upstream has released updates that appears 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: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes:1cf8b5dc
SPIGOT-4400: Populators running on existing chunks116cb9a1
SPIGOT-4399: Add attribute modifier equality test5ee1c18a
SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
69 Zeilen
2.1 KiB
Diff
69 Zeilen
2.1 KiB
Diff
From 7fbc8773c73f1e54b047a43056b23503f1109d3f Mon Sep 17 00:00:00 2001
|
|
From: Andrew Steinborn <git@steinborn.me>
|
|
Date: Mon, 23 Jul 2018 13:08:19 -0400
|
|
Subject: [PATCH] Optimize RegistryID.c()
|
|
|
|
This is a frequent hotspot for world loading/saving.
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/RegistryID.java b/src/main/java/net/minecraft/server/RegistryID.java
|
|
index d03ac0e70c..9242999f70 100644
|
|
--- a/src/main/java/net/minecraft/server/RegistryID.java
|
|
+++ b/src/main/java/net/minecraft/server/RegistryID.java
|
|
@@ -13,12 +13,14 @@ public class RegistryID<K> implements Registry<K> {
|
|
private K[] d;
|
|
private int e;
|
|
private int f;
|
|
+ private java.util.BitSet usedIds; // Paper
|
|
|
|
public RegistryID(int i) {
|
|
i = (int)((float)i / 0.8F);
|
|
this.b = (K[])(new Object[i]);
|
|
this.c = new int[i];
|
|
this.d = (K[])(new Object[i]);
|
|
+ this.usedIds = new java.util.BitSet(); // Paper
|
|
}
|
|
|
|
public int getId(@Nullable K object) {
|
|
@@ -41,9 +43,14 @@ public class RegistryID<K> implements Registry<K> {
|
|
}
|
|
|
|
private int c() {
|
|
+ // Paper start
|
|
+ /*
|
|
while(this.e < this.d.length && this.d[this.e] != null) {
|
|
++this.e;
|
|
}
|
|
+ */
|
|
+ this.e = this.usedIds.nextClearBit(0);
|
|
+ // Paper end
|
|
|
|
return this.e;
|
|
}
|
|
@@ -56,6 +63,7 @@ public class RegistryID<K> implements Registry<K> {
|
|
this.d = (K[])(new Object[i]);
|
|
this.e = 0;
|
|
this.f = 0;
|
|
+ this.usedIds.clear(); // Paper
|
|
|
|
for(int j = 0; j < aobject.length; ++j) {
|
|
if (aobject[j] != null) {
|
|
@@ -80,6 +88,7 @@ public class RegistryID<K> implements Registry<K> {
|
|
this.b[l] = object;
|
|
this.c[l] = i;
|
|
this.d[i] = object;
|
|
+ this.usedIds.set(i); // Paper
|
|
++this.f;
|
|
if (i == this.e) {
|
|
++this.e;
|
|
@@ -140,6 +149,7 @@ public class RegistryID<K> implements Registry<K> {
|
|
Arrays.fill(this.d, (Object)null);
|
|
this.e = 0;
|
|
this.f = 0;
|
|
+ this.usedIds.clear(); // Paper
|
|
}
|
|
|
|
public int b() {
|
|
--
|
|
2.19.0
|
|
|