geforkt von Mirrors/Paper
84c81146c1
Portion of diff was dropped in the mappings update commit. Also remove the option to remove invalid statistics. The server will automatically do this now as of... 1.13?, our option wasn't even doing anything.
66 Zeilen
2.0 KiB
Diff
66 Zeilen
2.0 KiB
Diff
From 0000000000000000000000000000000000000000 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 d03ac0e70..9242999f7 100644
|
|
--- a/src/main/java/net/minecraft/server/RegistryID.java
|
|
+++ b/src/main/java/net/minecraft/server/RegistryID.java
|
|
@@ -0,0 +0,0 @@ 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) {
|
|
@@ -0,0 +0,0 @@ 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;
|
|
}
|
|
@@ -0,0 +0,0 @@ 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) {
|
|
@@ -0,0 +0,0 @@ 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;
|
|
@@ -0,0 +0,0 @@ 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() {
|
|
--
|