Reduce MutableInt and Vec3d allocations, use ArrayDeque
This commit is contained in:
@@ -13,7 +13,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
private final ChunkMapDistance.b f = new ChunkMapDistance.b(8);
|
private final ChunkMapDistance.b f = new ChunkMapDistance.b(8);
|
||||||
private final ChunkMapDistance.c g = new ChunkMapDistance.c(33);
|
private final ChunkMapDistance.c g = new ChunkMapDistance.c(33);
|
||||||
- private final Set<PlayerChunk> pendingChunkUpdates = Sets.newHashSet();
|
- private final Set<PlayerChunk> pendingChunkUpdates = Sets.newHashSet();
|
||||||
+ private final java.util.Queue<PlayerChunk> pendingChunkUpdates = new java.util.LinkedList<>(); // PAIL pendingChunkUpdates // Paper - use a queue
|
+ private final java.util.Queue<PlayerChunk> pendingChunkUpdates = new java.util.ArrayDeque<>(); // PAIL pendingChunkUpdates // Paper - use a queue
|
||||||
private final ChunkTaskQueueSorter i;
|
private final ChunkTaskQueueSorter i;
|
||||||
private final Mailbox<ChunkTaskQueueSorter.a<Runnable>> j;
|
private final Mailbox<ChunkTaskQueueSorter.a<Runnable>> j;
|
||||||
private final Mailbox<ChunkTaskQueueSorter.b> k;
|
private final Mailbox<ChunkTaskQueueSorter.b> k;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- private final ChunkMapDistance.b f = new ChunkMapDistance.b(8);
|
- private final ChunkMapDistance.b f = new ChunkMapDistance.b(8);
|
||||||
+ public static final int MOB_SPAWN_RANGE = 8; //private final ChunkMapDistance.b f = new ChunkMapDistance.b(8); // Paper - no longer used
|
+ public static final int MOB_SPAWN_RANGE = 8; //private final ChunkMapDistance.b f = new ChunkMapDistance.b(8); // Paper - no longer used
|
||||||
private final ChunkMapDistance.c g = new ChunkMapDistance.c(33);
|
private final ChunkMapDistance.c g = new ChunkMapDistance.c(33);
|
||||||
private final java.util.Queue<PlayerChunk> pendingChunkUpdates = new java.util.LinkedList<>(); // PAIL pendingChunkUpdates // Paper - use a queue
|
private final java.util.Queue<PlayerChunk> pendingChunkUpdates = new java.util.ArrayDeque<>(); // PAIL pendingChunkUpdates // Paper - use a queue
|
||||||
private final ChunkTaskQueueSorter i;
|
private final ChunkTaskQueueSorter i;
|
||||||
@@ -0,0 +0,0 @@ public abstract class ChunkMapDistance {
|
@@ -0,0 +0,0 @@ public abstract class ChunkMapDistance {
|
||||||
private final Executor m;
|
private final Executor m;
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||||
|
Date: Mon, 27 Apr 2020 02:48:06 -0700
|
||||||
|
Subject: [PATCH] Reduce MutableInt allocations from light engine
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/LightEngineBlock.java b/src/main/java/net/minecraft/server/LightEngineBlock.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/LightEngineBlock.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/LightEngineBlock.java
|
||||||
|
@@ -0,0 +0,0 @@ public final class LightEngineBlock extends LightEngineLayer<LightEngineStorageB
|
||||||
|
if (enumdirection == null) {
|
||||||
|
return 15;
|
||||||
|
} else {
|
||||||
|
- MutableInt mutableint = new MutableInt();
|
||||||
|
+ // Paper start - reduce mutableint allocations
|
||||||
|
+ MutableInt mutableint = com.destroystokyo.paper.util.pooled.PooledObjects.POOLED_MUTABLE_INTEGERS.acquire();
|
||||||
|
+ try {
|
||||||
|
+ // Paper end - reduce mutableint allocations
|
||||||
|
IBlockData iblockdata = this.a(j, mutableint);
|
||||||
|
|
||||||
|
if (mutableint.getValue() >= 15) {
|
||||||
|
@@ -0,0 +0,0 @@ public final class LightEngineBlock extends LightEngineLayer<LightEngineStorageB
|
||||||
|
|
||||||
|
return VoxelShapes.b(voxelshape, voxelshape1) ? 15 : k + Math.max(1, mutableint.getValue());
|
||||||
|
}
|
||||||
|
+ } finally { // Paper start - reduce mutableint allocations
|
||||||
|
+ com.destroystokyo.paper.util.pooled.PooledObjects.POOLED_MUTABLE_INTEGERS.release(mutableint);
|
||||||
|
+ }
|
||||||
|
+ // Paper end - reduce mutableint allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/LightEngineSky.java b/src/main/java/net/minecraft/server/LightEngineSky.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/LightEngineSky.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/LightEngineSky.java
|
||||||
|
@@ -0,0 +0,0 @@ public final class LightEngineSky extends LightEngineLayer<LightEngineStorageSky
|
||||||
|
if (k >= 15) {
|
||||||
|
return k;
|
||||||
|
} else {
|
||||||
|
- MutableInt mutableint = new MutableInt();
|
||||||
|
+ // Paper start - reduce mutableint allocations
|
||||||
|
+ MutableInt mutableint = com.destroystokyo.paper.util.pooled.PooledObjects.POOLED_MUTABLE_INTEGERS.acquire();
|
||||||
|
+ try {
|
||||||
|
+ // Paper end - reduce mutableint allocations
|
||||||
|
IBlockData iblockdata = this.a(j, mutableint);
|
||||||
|
|
||||||
|
if (mutableint.getValue() >= 15) {
|
||||||
|
@@ -0,0 +0,0 @@ public final class LightEngineSky extends LightEngineLayer<LightEngineStorageSky
|
||||||
|
|
||||||
|
return flag1 && k == 0 && mutableint.getValue() == 0 ? 0 : k + Math.max(1, mutableint.getValue());
|
||||||
|
}
|
||||||
|
+ } finally { // Paper start - reduce mutableint allocations
|
||||||
|
+ com.destroystokyo.paper.util.pooled.PooledObjects.POOLED_MUTABLE_INTEGERS.release(mutableint);
|
||||||
|
+ }
|
||||||
|
+ // Paper end - reduce mutableint allocations
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Spottedleaf <spottedleaf@spottedleaf.dev>
|
||||||
|
Date: Mon, 27 Apr 2020 00:04:16 -0700
|
||||||
|
Subject: [PATCH] Reduce allocation of Vec3D by entity tracker
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityTrackerEntry.java b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityTrackerEntry.java
|
||||||
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
||||||
|
++this.o;
|
||||||
|
i = MathHelper.d(this.tracker.yaw * 256.0F / 360.0F);
|
||||||
|
j = MathHelper.d(this.tracker.pitch * 256.0F / 360.0F);
|
||||||
|
- Vec3D vec3d = this.tracker.getPositionVector().d(PacketPlayOutEntity.a(this.xLoc, this.yLoc, this.zLoc));
|
||||||
|
- boolean flag1 = vec3d.g() >= 7.62939453125E-6D;
|
||||||
|
+ // Paper start - reduce allocation of Vec3D here
|
||||||
|
+ double vec3d_dx = this.tracker.locX() - 2.44140625E-4D*(this.xLoc);
|
||||||
|
+ double vec3d_dy = this.tracker.locY() - 2.44140625E-4D*(this.yLoc);
|
||||||
|
+ double vec3d_dz = this.tracker.locZ() - 2.44140625E-4D*(this.zLoc);
|
||||||
|
+ boolean flag1 = (vec3d_dx * vec3d_dx + vec3d_dy * vec3d_dy + vec3d_dz * vec3d_dz) >= 7.62939453125E-6D;
|
||||||
|
+ // Paper end - reduce allocation of Vec3D here
|
||||||
|
Packet<?> packet1 = null;
|
||||||
|
boolean flag2 = flag1 || this.tickCounter % 60 == 0;
|
||||||
|
boolean flag3 = Math.abs(i - this.yRot) >= 1 || Math.abs(j - this.xRot) >= 1;
|
||||||
|
@@ -0,0 +0,0 @@ public class EntityTrackerEntry {
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
|
if (this.tickCounter > 0 || this.tracker instanceof EntityArrow) {
|
||||||
|
- long k = PacketPlayOutEntity.a(vec3d.x);
|
||||||
|
- long l = PacketPlayOutEntity.a(vec3d.y);
|
||||||
|
- long i1 = PacketPlayOutEntity.a(vec3d.z);
|
||||||
|
+ // Paper start - remove allocation of Vec3D here
|
||||||
|
+ long k = PacketPlayOutEntity.a(vec3d_dx);
|
||||||
|
+ long l = PacketPlayOutEntity.a(vec3d_dy);
|
||||||
|
+ long i1 = PacketPlayOutEntity.a(vec3d_dz);
|
||||||
|
+ // Paper end - remove allocation of Vec3D here
|
||||||
|
boolean flag4 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
|
||||||
|
|
||||||
|
if (!flag4 && this.o <= 400 && !this.q && this.r == this.tracker.onGround) {
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
|
||||||
|
@@ -0,0 +0,0 @@ public class PlayerChunkMap extends IChunkLoader implements PlayerChunk.d {
|
||||||
|
public void updatePlayer(EntityPlayer entityplayer) {
|
||||||
|
org.spigotmc.AsyncCatcher.catchOp("player tracker update"); // Spigot
|
||||||
|
if (entityplayer != this.tracker) {
|
||||||
|
- Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113
|
||||||
|
+ // Paper start - remove allocation of Vec3D here
|
||||||
|
+ //Vec3D vec3d = entityplayer.getPositionVector().d(this.tracker.getPositionVector()); // MC-155077, SPIGOT-5113
|
||||||
|
+ double vec3d_dx = entityplayer.locX() - this.tracker.locX();
|
||||||
|
+ double vec3d_dy = entityplayer.locY() - this.tracker.locY();
|
||||||
|
+ double vec3d_dz = entityplayer.locZ() - this.tracker.locZ();
|
||||||
|
+ // Paper end - remove allocation of Vec3D here
|
||||||
|
int i = Math.min(this.b(), (PlayerChunkMap.this.viewDistance - 1) * 16);
|
||||||
|
- boolean flag = vec3d.x >= (double) (-i) && vec3d.x <= (double) i && vec3d.z >= (double) (-i) && vec3d.z <= (double) i && this.tracker.a(entityplayer);
|
||||||
|
+ boolean flag = vec3d_dx >= (double) (-i) && vec3d_dx <= (double) i && vec3d_dz >= (double) (-i) && vec3d_dz <= (double) i && this.tracker.a(entityplayer); // Paper - remove allocation of Vec3D here
|
||||||
|
|
||||||
|
if (flag) {
|
||||||
|
boolean flag1 = this.tracker.attachedToPlayer;
|
||||||
Reference in New Issue
Block a user