mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Add more timings timers
This commit is contained in:
@@ -1,28 +1,30 @@
|
||||
From ad3d52400086d46440569f70b21be061c7ef856c Mon Sep 17 00:00:00 2001
|
||||
From 0fc52f8c76773eb856e9bca698433d00c4a38f23 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Fri, 6 Mar 2020 16:33:58 -0600
|
||||
Subject: [PATCH] Optimize entity pathfinder selector
|
||||
|
||||
---
|
||||
.../co/aikar/timings/MinecraftTimings.java | 4 +
|
||||
.../co/aikar/timings/MinecraftTimings.java | 6 +
|
||||
.../tuinity/util/OptimizedSmallEnumSet.java | 65 +++++++++
|
||||
.../net/minecraft/server/PathfinderGoal.java | 6 +-
|
||||
.../server/PathfinderGoalSelector.java | 132 +++++++++++-------
|
||||
.../server/PathfinderGoalWrapped.java | 6 +-
|
||||
5 files changed, 159 insertions(+), 54 deletions(-)
|
||||
5 files changed, 161 insertions(+), 54 deletions(-)
|
||||
create mode 100644 src/main/java/com/tuinity/tuinity/util/OptimizedSmallEnumSet.java
|
||||
|
||||
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
index 69e26a8267..11b62a2e0d 100644
|
||||
index 69e26a8267..2fa2cd297a 100644
|
||||
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
@@ -42,6 +42,10 @@ public final class MinecraftTimings {
|
||||
@@ -42,6 +42,12 @@ 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");
|
||||
+ // Purpur end
|
||||
+
|
||||
private static final Map<Class<?>, String> taskNameCache = new MapMaker().weakKeys().makeMap();
|
||||
|
||||
|
||||
175
patches/server/0123-Add-more-timings-timers.patch
Normal file
175
patches/server/0123-Add-more-timings-timers.patch
Normal file
@@ -0,0 +1,175 @@
|
||||
From 28c65172fa6558d88974d8b46f4098f06fe61039 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
|
||||
|
||||
---
|
||||
.../java/co/aikar/timings/MinecraftTimings.java | 16 ++++++++++++++++
|
||||
.../net/minecraft/server/EntityInsentient.java | 14 ++++++++++++++
|
||||
.../java/net/minecraft/server/EntityLiving.java | 12 ++++++++++++
|
||||
.../java/net/minecraft/server/WorldServer.java | 2 ++
|
||||
4 files changed, 44 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/co/aikar/timings/MinecraftTimings.java b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
index 2fa2cd297a..5d65a71d67 100644
|
||||
--- a/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
+++ b/src/main/java/co/aikar/timings/MinecraftTimings.java
|
||||
@@ -46,6 +46,22 @@ public final class MinecraftTimings {
|
||||
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();
|
||||
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
||||
index bac6cea1ff..f9ca4280d4 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 a991614408..44889e86e1 100644
|
||||
--- a/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
|
||||
@@ -2385,7 +2385,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);
|
||||
@@ -2592,18 +2594,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);
|
||||
@@ -2619,22 +2626,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/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
index 6c95497ee1..04a5d0b56e 100644
|
||||
--- a/src/main/java/net/minecraft/server/WorldServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/WorldServer.java
|
||||
@@ -808,7 +808,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
|
||||
|
||||
Reference in New Issue
Block a user