mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 08:57:44 +01:00
Upstream has released updates that appears to apply and compile correctly Paper Changes: b0b54e4e Optimize Villager Pathfinding - Massive Villager Improvement 33a2134b Workaround for really evil plugins breaking sounds b88ee11f Don't unregister the primary dimensions on world unload 21f9efa2 Improve implementation of chunk leak clean to not run as often 7ee71146 Add missing null check for structure start chunk access b12177fb One more to seal the deal to improve unloading inactive chunks 78ee3b4e Restore a condition I accidently removed in last build 88a68829 Fix unloading inaccessible chunks too fast regressing gen speed 210a32f2 Unload leaked Cached Chunks c9795e92 Fix Spigot bug with chunk unloading
225 lines
12 KiB
Diff
225 lines
12 KiB
Diff
From 0d1892aab03c9d9cfd0402e584734bd177349546 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Sat, 4 Apr 2020 02:36:45 -0500
|
|
Subject: [PATCH] Add more timings timers
|
|
|
|
---
|
|
.../co/aikar/timings/MinecraftTimings.java | 22 +++++++++++++++++++
|
|
.../minecraft/server/EntityInsentient.java | 14 ++++++++++++
|
|
.../net/minecraft/server/EntityLiving.java | 12 ++++++++++
|
|
.../server/PathfinderGoalSelector.java | 6 +++++
|
|
.../net/minecraft/server/WorldServer.java | 2 ++
|
|
5 files changed, 56 insertions(+)
|
|
|
|
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
|
index 37341d2d2e..918eaf0c6b 100644
|
|
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
|
|
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
|
@@ -43,6 +43,28 @@ public final class MinecraftTimings {
|
|
public static final Timing antiXrayUpdateTimer = Timings.ofSafe("anti-xray - update");
|
|
public static final Timing antiXrayObfuscateTimer = Timings.ofSafe("anti-xray - obfuscate");
|
|
|
|
+ // Purpur start
|
|
+ public static final Timing goalCleanup = Timings.ofSafe("PathfinderGoal - Cleanup");
|
|
+ public static final Timing goalUpdate = Timings.ofSafe("PathfinderGoal - Update");
|
|
+ public static final Timing goalTick = Timings.ofSafe("PathfinderGoal - Tick");
|
|
+
|
|
+ public static final Timing entityMovementTick = Timings.ofSafe("Entity Movement");
|
|
+ public static final Timing entityMovementTickAI = Timings.ofSafe("Entity Movement - AI");
|
|
+ public static final Timing entityMovementTickNewAI = Timings.ofSafe("Entity Movement - New AI");
|
|
+ public static final Timing entityMovementTickJump = Timings.ofSafe("Entity Movement - Jump");
|
|
+ public static final Timing entityMovementTickTravel = Timings.ofSafe("Entity Movement - Travel");
|
|
+ public static final Timing entityMovementTickPush = Timings.ofSafe("Entity Movement - Push");
|
|
+
|
|
+ public static final Timing entityInsentientSensing = Timings.ofSafe("Entity Insentient - Sensing");
|
|
+ public static final Timing entityInsentientTargetSelector = Timings.ofSafe("Entity Insentient - TargetSelector");
|
|
+ public static final Timing entityInsentientGoalSelector = Timings.ofSafe("Entity Insentient - GoalSelector");
|
|
+ public static final Timing entityInsentientNavigation = Timings.ofSafe("Entity Insentient - Navigation");
|
|
+ public static final Timing entityInsentientMobTick = Timings.ofSafe("Entity Insentient - MobTick");
|
|
+ public static final Timing entityInsentientControls = Timings.ofSafe("Entity Insentient - Controls");
|
|
+
|
|
+ public static final Timing passengerTick = Timings.ofSafe("Passenger Tick");
|
|
+ // Purpur end
|
|
+
|
|
private static final Map<Class<?>, String> taskNameCache = new MapMaker().weakKeys().makeMap();
|
|
|
|
private MinecraftTimings() {}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
index 3adc3434e1..eb0befb357 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
@@ -1,5 +1,7 @@
|
|
package net.minecraft.server;
|
|
|
|
+import co.aikar.timings.Timing;
|
|
+import co.aikar.timings.Timings;
|
|
import com.google.common.collect.Maps;
|
|
import java.util.Arrays;
|
|
import java.util.Iterator;
|
|
@@ -676,21 +678,32 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
}
|
|
// Paper end
|
|
this.world.getMethodProfiler().enter("sensing");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientSensing.startTiming(); // Purpur
|
|
this.bw.a();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientSensing.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("targetSelector");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientTargetSelector.startTiming(); // Purpur
|
|
this.targetSelector.doTick();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientTargetSelector.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("goalSelector");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientGoalSelector.startTiming(); // Purpur
|
|
this.goalSelector.doTick();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientGoalSelector.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("navigation");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientNavigation.startTiming(); // Purpur
|
|
this.navigation.c();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientNavigation.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("mob tick");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientMobTick.startTiming(); // Purpur
|
|
this.mobTick();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientMobTick.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("controls");
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientControls.startTiming(); // Purpur
|
|
this.world.getMethodProfiler().enter("move");
|
|
this.moveController.a();
|
|
this.world.getMethodProfiler().exitEnter("look");
|
|
@@ -698,6 +711,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
this.world.getMethodProfiler().exitEnter("jump");
|
|
this.bq.b();
|
|
this.world.getMethodProfiler().exit();
|
|
+ co.aikar.timings.MinecraftTimings.entityInsentientControls.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.K();
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
index e9ef6d00c8..29b60e2879 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
|
@@ -2398,7 +2398,9 @@ public abstract class EntityLiving extends Entity {
|
|
}
|
|
}
|
|
|
|
+ MinecraftTimings.entityMovementTick.startTiming(); // Purpur
|
|
if (!dead) this.movementTick(); // Purpur
|
|
+ MinecraftTimings.entityMovementTick.stopTiming(); // Purpur
|
|
double d0 = this.locX() - this.lastX;
|
|
double d1 = this.locZ() - this.lastZ;
|
|
float f = (float) (d0 * d0 + d1 * d1);
|
|
@@ -2605,18 +2607,23 @@ public abstract class EntityLiving extends Entity {
|
|
|
|
this.setMot(d4, d5, d6);
|
|
this.world.getMethodProfiler().enter("ai");
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickAI.startTiming(); // Purpur
|
|
if (this.isFrozen()) {
|
|
this.jumping = false;
|
|
this.aZ = 0.0F;
|
|
this.bb = 0.0F;
|
|
} else if (this.doAITick()) {
|
|
this.world.getMethodProfiler().enter("newAi");
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickNewAI.startTiming(); // Purpur
|
|
this.doTick();
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickNewAI.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
}
|
|
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickAI.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("jump");
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickJump.startTiming(); // Purpur
|
|
if (this.jumping) {
|
|
if (this.N > 0.0D && (!this.onGround || this.N > 0.4D)) {
|
|
this.c(TagsFluid.WATER);
|
|
@@ -2632,22 +2639,27 @@ public abstract class EntityLiving extends Entity {
|
|
this.jumpTicks = 0;
|
|
}
|
|
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickJump.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("travel");
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickTravel.startTiming(); // Purpur
|
|
this.aZ *= 0.98F;
|
|
this.bb *= 0.98F;
|
|
this.n();
|
|
AxisAlignedBB axisalignedbb = this.getBoundingBox();
|
|
|
|
this.e(new Vec3D((double) this.aZ, (double) this.ba, (double) this.bb));
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickTravel.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
this.world.getMethodProfiler().enter("push");
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickPush.startTiming(); // Purpur
|
|
if (this.bn > 0) {
|
|
--this.bn;
|
|
this.a(axisalignedbb, this.getBoundingBox());
|
|
}
|
|
|
|
this.collideNearby();
|
|
+ co.aikar.timings.MinecraftTimings.entityMovementTickPush.stopTiming(); // Purpur
|
|
this.world.getMethodProfiler().exit();
|
|
// Purpur start
|
|
if (EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0) {
|
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
|
index a68fc11ec6..4b277a6f6d 100644
|
|
--- a/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
|
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSelector.java
|
|
@@ -78,6 +78,7 @@ public class PathfinderGoalSelector {
|
|
private static final PathfinderGoal.Type[] PATHFINDER_GOAL_TYPES = PathfinderGoal.Type.values(); // Paper - remove streams from pathfindergoalselector
|
|
|
|
public void doTick() {
|
|
+ co.aikar.timings.MinecraftTimings.goalCleanup.startTiming();
|
|
this.e.enter("goalCleanup");
|
|
// Paper start - remove streams from pathfindergoalselector
|
|
for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
|
@@ -97,8 +98,10 @@ public class PathfinderGoalSelector {
|
|
}
|
|
|
|
});
|
|
+ co.aikar.timings.MinecraftTimings.goalCleanup.stopTiming();
|
|
this.e.exit();
|
|
this.e.enter("goalUpdate");
|
|
+ co.aikar.timings.MinecraftTimings.goalUpdate.startTiming();
|
|
// Paper start - remove streams from pathfindergoalselector
|
|
goal_update_loop: for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
|
PathfinderGoalWrapped wrappedGoal = iterator.next();
|
|
@@ -141,8 +144,10 @@ public class PathfinderGoalSelector {
|
|
wrappedGoal.c();
|
|
}
|
|
// Paper end - remove streams from pathfindergoalselector
|
|
+ co.aikar.timings.MinecraftTimings.goalUpdate.stopTiming();
|
|
this.e.exit();
|
|
this.e.enter("goalTick");
|
|
+ co.aikar.timings.MinecraftTimings.goalTick.startTiming();
|
|
// Paper start - remove streams from pathfindergoalselector
|
|
for (Iterator<PathfinderGoalWrapped> iterator = this.d.iterator(); iterator.hasNext();) {
|
|
PathfinderGoalWrapped wrappedGoal = iterator.next();
|
|
@@ -151,6 +156,7 @@ public class PathfinderGoalSelector {
|
|
}
|
|
}
|
|
// Paper end - remove streams from pathfindergoalselector
|
|
+ co.aikar.timings.MinecraftTimings.goalTick.stopTiming();
|
|
this.e.exit();
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
|
index 3546424a1c..799dfdf696 100644
|
|
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
|
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
|
@@ -845,7 +845,9 @@ public class WorldServer extends World {
|
|
return IRegistry.ENTITY_TYPE.getKey(entity1.getEntityType()).toString();
|
|
});
|
|
gameprofilerfiller.c("tickPassenger");
|
|
+ co.aikar.timings.MinecraftTimings.passengerTick.startTiming(); // Purpur
|
|
entity1.passengerTick();
|
|
+ co.aikar.timings.MinecraftTimings.passengerTick.stopTiming(); // Purpur
|
|
gameprofilerfiller.exit();
|
|
}
|
|
|
|
--
|
|
2.24.0
|
|
|