geforkt von Mirrors/Paper
Migrate timings classes to new package
Dieser Commit ist enthalten in:
Ursprung
1669598daa
Commit
a4ab2f017d
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
@ -4,6 +4,197 @@ Date: Fri, 8 Jan 2016 23:36:39 -0600
|
|||||||
Subject: [PATCH] Timings v2
|
Subject: [PATCH] Timings v2
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/co/aikar/timings/SpigotTimings.java b/src/main/java/co/aikar/timings/SpigotTimings.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/co/aikar/timings/SpigotTimings.java
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
+package co.aikar.timings;
|
||||||
|
+
|
||||||
|
+import net.minecraft.server.*;
|
||||||
|
+import org.bukkit.plugin.Plugin;
|
||||||
|
+import org.bukkit.scheduler.BukkitTask;
|
||||||
|
+
|
||||||
|
+import org.bukkit.craftbukkit.scheduler.CraftTask;
|
||||||
|
+
|
||||||
|
+public final class SpigotTimings {
|
||||||
|
+
|
||||||
|
+ public static final Timing playerListTimer = Timings.ofSafe("Player List");
|
||||||
|
+ public static final Timing connectionTimer = Timings.ofSafe("Connection Handler");
|
||||||
|
+ public static final Timing tickablesTimer = Timings.ofSafe("Tickables");
|
||||||
|
+ public static final Timing schedulerTimer = Timings.ofSafe("Scheduler");
|
||||||
|
+ public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick");
|
||||||
|
+ public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update");
|
||||||
|
+ public static final Timing serverCommandTimer = Timings.ofSafe("Server Command");
|
||||||
|
+ public static final Timing worldSaveTimer = Timings.ofSafe("World Save");
|
||||||
|
+
|
||||||
|
+ public static final Timing tickEntityTimer = Timings.ofSafe("## tickEntity");
|
||||||
|
+ public static final Timing tickTileEntityTimer = Timings.ofSafe("## tickTileEntity");
|
||||||
|
+
|
||||||
|
+ public static final Timing processQueueTimer = Timings.ofSafe("processQueue");
|
||||||
|
+
|
||||||
|
+ public static final Timing playerCommandTimer = Timings.ofSafe("playerCommand");
|
||||||
|
+
|
||||||
|
+ public static final Timing entityActivationCheckTimer = Timings.ofSafe("entityActivationCheck");
|
||||||
|
+ public static final Timing checkIfActiveTimer = Timings.ofSafe("checkIfActive");
|
||||||
|
+
|
||||||
|
+ public static final Timing antiXrayUpdateTimer = Timings.ofSafe("anti-xray - update");
|
||||||
|
+ public static final Timing antiXrayObfuscateTimer = Timings.ofSafe("anti-xray - obfuscate");
|
||||||
|
+
|
||||||
|
+ private SpigotTimings() {}
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Gets a timer associated with a plugins tasks.
|
||||||
|
+ * @param bukkitTask
|
||||||
|
+ * @param period
|
||||||
|
+ * @return
|
||||||
|
+ */
|
||||||
|
+ public static Timing getPluginTaskTimings(BukkitTask bukkitTask, long period) {
|
||||||
|
+ if (!bukkitTask.isSync()) {
|
||||||
|
+ return null;
|
||||||
|
+ }
|
||||||
|
+ Plugin plugin;
|
||||||
|
+
|
||||||
|
+ Runnable task = ((CraftTask) bukkitTask).task;
|
||||||
|
+
|
||||||
|
+ final Class<? extends Runnable> taskClass = task.getClass();
|
||||||
|
+ if (bukkitTask.getOwner() != null) {
|
||||||
|
+ plugin = bukkitTask.getOwner();
|
||||||
|
+ } else {
|
||||||
|
+ plugin = TimingsManager.getPluginByClassloader(taskClass);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ final String taskname;
|
||||||
|
+ if (taskClass.isAnonymousClass()) {
|
||||||
|
+ taskname = taskClass.getName();
|
||||||
|
+ } else {
|
||||||
|
+ taskname = taskClass.getCanonicalName();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ String name = "Task: " +taskname;
|
||||||
|
+ if (period > 0) {
|
||||||
|
+ name += " (interval:" + period +")";
|
||||||
|
+ } else {
|
||||||
|
+ name += " (Single)";
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (plugin == null) {
|
||||||
|
+ return Timings.ofSafe(null, name, TimingsManager.PLUGIN_GROUP_HANDLER);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return Timings.ofSafe(plugin, name);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Get a named timer for the specified entity type to track type specific timings.
|
||||||
|
+ * @param entity
|
||||||
|
+ * @return
|
||||||
|
+ */
|
||||||
|
+ public static Timing getEntityTimings(Entity entity) {
|
||||||
|
+ String entityType = entity.getClass().getName();
|
||||||
|
+ return Timings.ofSafe("Minecraft", "## tickEntity - " + entityType, tickEntityTimer);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * Get a named timer for the specified tile entity type to track type specific timings.
|
||||||
|
+ * @param entity
|
||||||
|
+ * @return
|
||||||
|
+ */
|
||||||
|
+ public static Timing getTileEntityTimings(TileEntity entity) {
|
||||||
|
+ String entityType = entity.getClass().getName();
|
||||||
|
+ return Timings.ofSafe("Minecraft", "## tickTileEntity - " + entityType, tickTileEntityTimer);
|
||||||
|
+ }
|
||||||
|
+ public static Timing getCancelTasksTimer() {
|
||||||
|
+ return Timings.ofSafe("Cancel Tasks");
|
||||||
|
+ }
|
||||||
|
+ public static Timing getCancelTasksTimer(Plugin plugin) {
|
||||||
|
+ return Timings.ofSafe(plugin, "Cancel Tasks");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void stopServer() {
|
||||||
|
+ TimingsManager.stopServer();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static Timing getBlockTiming(Block block) {
|
||||||
|
+ return Timings.ofSafe("## Scheduled Block: " + block.getName());
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/co/aikar/timings/WorldTimingsHandler.java b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/co/aikar/timings/WorldTimingsHandler.java
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
+package co.aikar.timings;
|
||||||
|
+
|
||||||
|
+import net.minecraft.server.World;
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * Set of timers per world, to track world specific timings.
|
||||||
|
+ */
|
||||||
|
+public class WorldTimingsHandler {
|
||||||
|
+ public final Timing mobSpawn;
|
||||||
|
+ public final Timing doChunkUnload;
|
||||||
|
+ public final Timing doPortalForcer;
|
||||||
|
+ public final Timing scheduledBlocks;
|
||||||
|
+ public final Timing scheduledBlocksCleanup;
|
||||||
|
+ public final Timing scheduledBlocksTicking;
|
||||||
|
+ public final Timing chunkTicks;
|
||||||
|
+ public final Timing chunkTicksBlocks;
|
||||||
|
+ public final Timing doVillages;
|
||||||
|
+ public final Timing doChunkMap;
|
||||||
|
+ public final Timing doChunkGC;
|
||||||
|
+ public final Timing doSounds;
|
||||||
|
+ public final Timing entityRemoval;
|
||||||
|
+ public final Timing entityTick;
|
||||||
|
+ public final Timing tileEntityTick;
|
||||||
|
+ public final Timing tileEntityPending;
|
||||||
|
+ public final Timing tracker;
|
||||||
|
+ public final Timing doTick;
|
||||||
|
+ public final Timing tickEntities;
|
||||||
|
+
|
||||||
|
+ public final Timing syncChunkLoadTimer;
|
||||||
|
+ public final Timing syncChunkLoadDataTimer;
|
||||||
|
+ public final Timing syncChunkLoadStructuresTimer;
|
||||||
|
+ public final Timing syncChunkLoadEntitiesTimer;
|
||||||
|
+ public final Timing syncChunkLoadTileEntitiesTimer;
|
||||||
|
+ public final Timing syncChunkLoadTileTicksTimer;
|
||||||
|
+ public final Timing syncChunkLoadPostTimer;
|
||||||
|
+
|
||||||
|
+ public WorldTimingsHandler(World server) {
|
||||||
|
+ String name = server.worldData.getName() +" - ";
|
||||||
|
+
|
||||||
|
+ mobSpawn = Timings.ofSafe(name + "mobSpawn");
|
||||||
|
+ doChunkUnload = Timings.ofSafe(name + "doChunkUnload");
|
||||||
|
+ scheduledBlocks = Timings.ofSafe(name + "Scheduled Blocks");
|
||||||
|
+ scheduledBlocksCleanup = Timings.ofSafe(name + "Scheduled Blocks - Cleanup");
|
||||||
|
+ scheduledBlocksTicking = Timings.ofSafe(name + "Scheduled Blocks - Ticking");
|
||||||
|
+ chunkTicks = Timings.ofSafe(name + "Chunk Ticks");
|
||||||
|
+ chunkTicksBlocks = Timings.ofSafe(name + "Chunk Ticks - Blocks");
|
||||||
|
+ doVillages = Timings.ofSafe(name + "doVillages");
|
||||||
|
+ doChunkMap = Timings.ofSafe(name + "doChunkMap");
|
||||||
|
+ doSounds = Timings.ofSafe(name + "doSounds");
|
||||||
|
+ doChunkGC = Timings.ofSafe(name + "doChunkGC");
|
||||||
|
+ doPortalForcer = Timings.ofSafe(name + "doPortalForcer");
|
||||||
|
+ entityTick = Timings.ofSafe(name + "entityTick");
|
||||||
|
+ entityRemoval = Timings.ofSafe(name + "entityRemoval");
|
||||||
|
+ tileEntityTick = Timings.ofSafe(name + "tileEntityTick");
|
||||||
|
+ tileEntityPending = Timings.ofSafe(name + "tileEntityPending");
|
||||||
|
+
|
||||||
|
+ syncChunkLoadTimer = Timings.ofSafe(name + "syncChunkLoad");
|
||||||
|
+ syncChunkLoadDataTimer = Timings.ofSafe(name + "syncChunkLoad - Data");
|
||||||
|
+ syncChunkLoadStructuresTimer = Timings.ofSafe(name + "chunkLoad - Structures");
|
||||||
|
+ syncChunkLoadEntitiesTimer = Timings.ofSafe(name + "chunkLoad - Entities");
|
||||||
|
+ syncChunkLoadTileEntitiesTimer = Timings.ofSafe(name + "chunkLoad - TileEntities");
|
||||||
|
+ syncChunkLoadTileTicksTimer = Timings.ofSafe(name + "chunkLoad - TileTicks");
|
||||||
|
+ syncChunkLoadPostTimer = Timings.ofSafe(name + "chunkLoad - Post");
|
||||||
|
+
|
||||||
|
+ tracker = Timings.ofSafe(name + "tracker");
|
||||||
|
+ doTick = Timings.ofSafe(name + "doTick");
|
||||||
|
+ tickEntities = Timings.ofSafe(name + "tickEntities");
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
|
diff --git a/src/main/java/net/minecraft/server/Block.java b/src/main/java/net/minecraft/server/Block.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/net/minecraft/server/Block.java
|
--- a/src/main/java/net/minecraft/server/Block.java
|
||||||
@ -13,10 +204,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
protected boolean z;
|
protected boolean z;
|
||||||
protected boolean isTileEntity;
|
protected boolean isTileEntity;
|
||||||
+ // Spigot start
|
+ // Spigot start
|
||||||
+ public org.spigotmc.timings.Timing timing;
|
+ public co.aikar.timings.Timing timing;
|
||||||
+ public org.spigotmc.timings.Timing getTiming() {
|
+ public co.aikar.timings.Timing getTiming() {
|
||||||
+ if (timing == null) {
|
+ if (timing == null) {
|
||||||
+ timing = org.spigotmc.timings.SpigotTimings.getBlockTiming(this);
|
+ timing = co.aikar.timings.SpigotTimings.getBlockTiming(this);
|
||||||
+ }
|
+ }
|
||||||
+ return timing;
|
+ return timing;
|
||||||
+ }
|
+ }
|
||||||
@ -34,7 +225,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
import org.bukkit.craftbukkit.LoggerOutputStream;
|
import org.bukkit.craftbukkit.LoggerOutputStream;
|
||||||
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
import org.bukkit.event.server.ServerCommandEvent;
|
import org.bukkit.event.server.ServerCommandEvent;
|
||||||
import org.bukkit.craftbukkit.util.Waitable;
|
import org.bukkit.craftbukkit.util.Waitable;
|
||||||
import org.bukkit.event.server.RemoteServerCommandEvent;
|
import org.bukkit.event.server.RemoteServerCommandEvent;
|
||||||
@ -47,8 +238,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.entity.Painting;
|
import org.bukkit.entity.Painting;
|
||||||
import org.bukkit.entity.Vehicle;
|
import org.bukkit.entity.Vehicle;
|
||||||
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.Timing; // Spigot
|
+import co.aikar.timings.Timing; // Spigot
|
||||||
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
import org.bukkit.event.entity.EntityCombustByEntityEvent;
|
||||||
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
import org.bukkit.event.hanging.HangingBreakByEntityEvent;
|
||||||
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
|
import org.bukkit.event.painting.PaintingBreakByEntityEvent;
|
||||||
@ -86,7 +277,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
|
|
||||||
public abstract class EntityLiving extends Entity {
|
public abstract class EntityLiving extends Entity {
|
||||||
|
|
||||||
@ -157,7 +348,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
import org.bukkit.craftbukkit.Main;
|
import org.bukkit.craftbukkit.Main;
|
||||||
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
public abstract class MinecraftServer implements Runnable, ICommandListener, IAsyncTaskHandler, IMojangStatistics {
|
public abstract class MinecraftServer implements Runnable, ICommandListener, IAsyncTaskHandler, IMojangStatistics {
|
||||||
@ -175,7 +366,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
protected void A() throws ExceptionWorldConflict { // CraftBukkit - added throws
|
protected void A() throws ExceptionWorldConflict { // CraftBukkit - added throws
|
||||||
- SpigotTimings.serverTickTimer.startTiming(); // Spigot
|
- SpigotTimings.serverTickTimer.startTiming(); // Spigot
|
||||||
+ org.spigotmc.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Spigot
|
+ co.aikar.timings.TimingsManager.FULL_SERVER_TICK.startTiming(); // Spigot
|
||||||
long i = System.nanoTime();
|
long i = System.nanoTime();
|
||||||
|
|
||||||
++this.ticks;
|
++this.ticks;
|
||||||
@ -185,7 +376,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
org.spigotmc.WatchdogThread.tick(); // Spigot
|
org.spigotmc.WatchdogThread.tick(); // Spigot
|
||||||
- SpigotTimings.serverTickTimer.stopTiming(); // Spigot
|
- SpigotTimings.serverTickTimer.stopTiming(); // Spigot
|
||||||
- org.spigotmc.CustomTimingsHandler.tick(); // Spigot
|
- org.spigotmc.CustomTimingsHandler.tick(); // Spigot
|
||||||
+ org.spigotmc.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Spigot
|
+ co.aikar.timings.TimingsManager.FULL_SERVER_TICK.stopTiming(); // Spigot
|
||||||
}
|
}
|
||||||
|
|
||||||
public void B() {
|
public void B() {
|
||||||
@ -197,7 +388,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.inventory.CraftingInventory;
|
import org.bukkit.inventory.CraftingInventory;
|
||||||
import org.bukkit.inventory.InventoryView;
|
import org.bukkit.inventory.InventoryView;
|
||||||
import org.bukkit.util.NumberConversions;
|
import org.bukkit.util.NumberConversions;
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
|
|
||||||
import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot
|
import org.github.paperspigot.PaperSpigotConfig; // PaperSpigot
|
||||||
@ -246,8 +437,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.apache.logging.log4j.Logger;
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.Timing; // Spigot
|
+import co.aikar.timings.Timing; // Spigot
|
||||||
import org.bukkit.inventory.InventoryHolder; // CraftBukkit
|
import org.bukkit.inventory.InventoryHolder; // CraftBukkit
|
||||||
|
|
||||||
public abstract class TileEntity {
|
public abstract class TileEntity {
|
||||||
@ -273,7 +464,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
|
||||||
import org.bukkit.generator.ChunkGenerator;
|
import org.bukkit.generator.ChunkGenerator;
|
||||||
+import org.spigotmc.timings.SpigotTimings;
|
+import co.aikar.timings.SpigotTimings;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.Callable;
|
import java.util.concurrent.Callable;
|
||||||
@ -282,7 +473,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
public final org.github.paperspigot.PaperSpigotWorldConfig paperSpigotConfig; // PaperSpigot
|
public final org.github.paperspigot.PaperSpigotWorldConfig paperSpigotConfig; // PaperSpigot
|
||||||
|
|
||||||
- public final SpigotTimings.WorldTimingsHandler timings; // Spigot
|
- public final SpigotTimings.WorldTimingsHandler timings; // Spigot
|
||||||
+ public final org.spigotmc.timings.WorldTimingsHandler timings; // Spigot
|
+ public final co.aikar.timings.WorldTimingsHandler timings; // Spigot
|
||||||
|
|
||||||
public CraftWorld getWorld() {
|
public CraftWorld getWorld() {
|
||||||
return this.world;
|
return this.world;
|
||||||
@ -291,7 +482,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
// CraftBukkit end
|
// CraftBukkit end
|
||||||
this.keepSpawnInMemory = this.paperSpigotConfig.keepSpawnInMemory; // PaperSpigot
|
this.keepSpawnInMemory = this.paperSpigotConfig.keepSpawnInMemory; // PaperSpigot
|
||||||
- timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
- timings = new SpigotTimings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
||||||
+ timings = new org.spigotmc.timings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
+ timings = new co.aikar.timings.WorldTimingsHandler(this); // Spigot - code below can generate new world and access timings
|
||||||
this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime);
|
this.entityLimiter = new org.spigotmc.TickLimiter(spigotConfig.entityMaxTickTime);
|
||||||
this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
|
this.tileLimiter = new org.spigotmc.TickLimiter(spigotConfig.tileMaxTickTime);
|
||||||
}
|
}
|
||||||
@ -314,7 +505,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
timings.entityTick.startTiming(); // Spigot
|
timings.entityTick.startTiming(); // Spigot
|
||||||
guardEntityList = true; // Spigot
|
guardEntityList = true; // Spigot
|
||||||
// CraftBukkit start - Use field for loop variable
|
// CraftBukkit start - Use field for loop variable
|
||||||
+ org.spigotmc.timings.TimingHistory.entityTicks += this.entityList.size(); // Spigot
|
+ co.aikar.timings.TimingHistory.entityTicks += this.entityList.size(); // Spigot
|
||||||
int entitiesThisCycle = 0;
|
int entitiesThisCycle = 0;
|
||||||
// PaperSpigot start - Disable tick limiters
|
// PaperSpigot start - Disable tick limiters
|
||||||
//if (tickPosition < 0) tickPosition = 0;
|
//if (tickPosition < 0) tickPosition = 0;
|
||||||
@ -338,7 +529,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
}
|
}
|
||||||
|
|
||||||
timings.tileEntityPending.stopTiming(); // Spigot
|
timings.tileEntityPending.stopTiming(); // Spigot
|
||||||
+ org.spigotmc.timings.TimingHistory.tileEntityTicks += this.tileEntityList.size(); // Spigot
|
+ co.aikar.timings.TimingHistory.tileEntityTicks += this.tileEntityList.size(); // Spigot
|
||||||
+
|
+
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
this.methodProfiler.b();
|
this.methodProfiler.b();
|
||||||
@ -355,7 +546,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
entity.lastPitch = entity.pitch;
|
entity.lastPitch = entity.pitch;
|
||||||
if (flag && entity.ad) {
|
if (flag && entity.ad) {
|
||||||
++entity.ticksLived;
|
++entity.ticksLived;
|
||||||
+ ++org.spigotmc.timings.TimingHistory.activatedEntityTicks; // Spigot
|
+ ++co.aikar.timings.TimingHistory.activatedEntityTicks; // Spigot
|
||||||
if (entity.vehicle != null) {
|
if (entity.vehicle != null) {
|
||||||
entity.ak();
|
entity.ak();
|
||||||
} else {
|
} else {
|
||||||
@ -433,7 +624,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
|
|
||||||
if (this.areChunksLoadedBetween(nextticklistentry.a.a(-b0, -b0, -b0), nextticklistentry.a.a(b0, b0, b0))) {
|
if (this.areChunksLoadedBetween(nextticklistentry.a.a(-b0, -b0, -b0), nextticklistentry.a.a(b0, b0, b0))) {
|
||||||
IBlockData iblockdata = this.getType(nextticklistentry.a);
|
IBlockData iblockdata = this.getType(nextticklistentry.a);
|
||||||
+ org.spigotmc.timings.Timing timing = iblockdata.getBlock().getTiming(); // Spigot
|
+ co.aikar.timings.Timing timing = iblockdata.getBlock().getTiming(); // Spigot
|
||||||
+ timing.startTiming(); // Spigot
|
+ timing.startTiming(); // Spigot
|
||||||
|
|
||||||
if (iblockdata.getBlock().getMaterial() != Material.AIR && Block.a(iblockdata.getBlock(), nextticklistentry.a())) {
|
if (iblockdata.getBlock().getMaterial() != Material.AIR && Block.a(iblockdata.getBlock(), nextticklistentry.a())) {
|
||||||
@ -459,7 +650,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
DefaultPermissions.registerCorePermissions();
|
DefaultPermissions.registerCorePermissions();
|
||||||
CraftDefaultPermissions.registerCorePermissions();
|
CraftDefaultPermissions.registerCorePermissions();
|
||||||
helpMap.initializeCommands();
|
helpMap.initializeCommands();
|
||||||
+ org.spigotmc.timings.Timings.reset(); // Spigot
|
+ co.aikar.timings.Timings.reset(); // Spigot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -701,7 +892,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
- }});
|
- }});
|
||||||
+ }}){{this.timings=org.spigotmc.timings.SpigotTimings.getCancelTasksTimer();}}; // Spigot
|
+ }}){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer();}}; // Spigot
|
||||||
handle(task, 0l);
|
handle(task, 0l);
|
||||||
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
||||||
if (taskPending == task) {
|
if (taskPending == task) {
|
||||||
@ -710,7 +901,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
- });
|
- });
|
||||||
+ }){{this.timings=org.spigotmc.timings.SpigotTimings.getCancelTasksTimer(plugin);}}; // Spigot
|
+ }){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer(plugin);}}; // Spigot
|
||||||
handle(task, 0l);
|
handle(task, 0l);
|
||||||
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
||||||
if (taskPending == task) {
|
if (taskPending == task) {
|
||||||
@ -719,7 +910,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
CraftScheduler.this.temp.clear();
|
CraftScheduler.this.temp.clear();
|
||||||
}
|
}
|
||||||
- });
|
- });
|
||||||
+ }){{this.timings=org.spigotmc.timings.SpigotTimings.getCancelTasksTimer();}}; // Spigot
|
+ }){{this.timings=co.aikar.timings.SpigotTimings.getCancelTasksTimer();}}; // Spigot
|
||||||
handle(task, 0l);
|
handle(task, 0l);
|
||||||
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
for (CraftTask taskPending = head.getNext(); taskPending != null; taskPending = taskPending.getNext()) {
|
||||||
if (taskPending == task) {
|
if (taskPending == task) {
|
||||||
@ -743,8 +934,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
-import org.bukkit.craftbukkit.SpigotTimings; // Spigot
|
||||||
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
-import org.spigotmc.CustomTimingsHandler; // Spigot
|
||||||
+import org.spigotmc.timings.SpigotTimings; // Spigot
|
+import co.aikar.timings.SpigotTimings; // Spigot
|
||||||
+import org.spigotmc.timings.Timing; // Spigot
|
+import co.aikar.timings.Timing; // Spigot
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
@ -835,7 +1026,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import net.minecraft.server.World;
|
import net.minecraft.server.World;
|
||||||
-import org.bukkit.craftbukkit.SpigotTimings;
|
-import org.bukkit.craftbukkit.SpigotTimings;
|
||||||
-import org.bukkit.entity.Creeper;
|
-import org.bukkit.entity.Creeper;
|
||||||
+import org.spigotmc.timings.SpigotTimings;
|
+import co.aikar.timings.SpigotTimings;
|
||||||
+
|
+
|
||||||
|
|
||||||
public class ActivationRange
|
public class ActivationRange
|
||||||
@ -848,7 +1039,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import net.minecraft.server.Blocks;
|
import net.minecraft.server.Blocks;
|
||||||
import net.minecraft.server.World;
|
import net.minecraft.server.World;
|
||||||
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
import org.bukkit.craftbukkit.util.CraftMagicNumbers;
|
||||||
+import org.spigotmc.timings.SpigotTimings;
|
+import co.aikar.timings.SpigotTimings;
|
||||||
|
|
||||||
// PaperSpigot start
|
// PaperSpigot start
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -905,8 +1096,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
import org.bukkit.configuration.InvalidConfigurationException;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
+import org.spigotmc.timings.Timings;
|
+import co.aikar.timings.Timings;
|
||||||
+import org.spigotmc.timings.TimingsManager;
|
+import co.aikar.timings.TimingsManager;
|
||||||
|
|
||||||
public class SpigotConfig
|
public class SpigotConfig
|
||||||
{
|
{
|
||||||
@ -950,195 +1141,4 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
private static void nettyThreads()
|
private static void nettyThreads()
|
||||||
{
|
{
|
||||||
int count = getInt( "settings.netty-threads", 4 );
|
int count = getInt( "settings.netty-threads", 4 );
|
||||||
diff --git a/src/main/java/org/spigotmc/timings/SpigotTimings.java b/src/main/java/org/spigotmc/timings/SpigotTimings.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/spigotmc/timings/SpigotTimings.java
|
|
||||||
@@ -0,0 +0,0 @@
|
|
||||||
+package org.spigotmc.timings;
|
|
||||||
+
|
|
||||||
+import net.minecraft.server.*;
|
|
||||||
+import org.bukkit.plugin.Plugin;
|
|
||||||
+import org.bukkit.scheduler.BukkitTask;
|
|
||||||
+
|
|
||||||
+import org.bukkit.craftbukkit.scheduler.CraftTask;
|
|
||||||
+
|
|
||||||
+public final class SpigotTimings {
|
|
||||||
+
|
|
||||||
+ public static final Timing playerListTimer = Timings.ofSafe("Player List");
|
|
||||||
+ public static final Timing connectionTimer = Timings.ofSafe("Connection Handler");
|
|
||||||
+ public static final Timing tickablesTimer = Timings.ofSafe("Tickables");
|
|
||||||
+ public static final Timing schedulerTimer = Timings.ofSafe("Scheduler");
|
|
||||||
+ public static final Timing chunkIOTickTimer = Timings.ofSafe("ChunkIOTick");
|
|
||||||
+ public static final Timing timeUpdateTimer = Timings.ofSafe("Time Update");
|
|
||||||
+ public static final Timing serverCommandTimer = Timings.ofSafe("Server Command");
|
|
||||||
+ public static final Timing worldSaveTimer = Timings.ofSafe("World Save");
|
|
||||||
+
|
|
||||||
+ public static final Timing tickEntityTimer = Timings.ofSafe("## tickEntity");
|
|
||||||
+ public static final Timing tickTileEntityTimer = Timings.ofSafe("## tickTileEntity");
|
|
||||||
+
|
|
||||||
+ public static final Timing processQueueTimer = Timings.ofSafe("processQueue");
|
|
||||||
+
|
|
||||||
+ public static final Timing playerCommandTimer = Timings.ofSafe("playerCommand");
|
|
||||||
+
|
|
||||||
+ public static final Timing entityActivationCheckTimer = Timings.ofSafe("entityActivationCheck");
|
|
||||||
+ public static final Timing checkIfActiveTimer = Timings.ofSafe("checkIfActive");
|
|
||||||
+
|
|
||||||
+ public static final Timing antiXrayUpdateTimer = Timings.ofSafe("anti-xray - update");
|
|
||||||
+ public static final Timing antiXrayObfuscateTimer = Timings.ofSafe("anti-xray - obfuscate");
|
|
||||||
+
|
|
||||||
+ private SpigotTimings() {}
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Gets a timer associated with a plugins tasks.
|
|
||||||
+ * @param bukkitTask
|
|
||||||
+ * @param period
|
|
||||||
+ * @return
|
|
||||||
+ */
|
|
||||||
+ public static Timing getPluginTaskTimings(BukkitTask bukkitTask, long period) {
|
|
||||||
+ if (!bukkitTask.isSync()) {
|
|
||||||
+ return null;
|
|
||||||
+ }
|
|
||||||
+ Plugin plugin;
|
|
||||||
+
|
|
||||||
+ Runnable task = ((CraftTask) bukkitTask).task;
|
|
||||||
+
|
|
||||||
+ final Class<? extends Runnable> taskClass = task.getClass();
|
|
||||||
+ if (bukkitTask.getOwner() != null) {
|
|
||||||
+ plugin = bukkitTask.getOwner();
|
|
||||||
+ } else {
|
|
||||||
+ plugin = TimingsManager.getPluginByClassloader(taskClass);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ final String taskname;
|
|
||||||
+ if (taskClass.isAnonymousClass()) {
|
|
||||||
+ taskname = taskClass.getName();
|
|
||||||
+ } else {
|
|
||||||
+ taskname = taskClass.getCanonicalName();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ String name = "Task: " +taskname;
|
|
||||||
+ if (period > 0) {
|
|
||||||
+ name += " (interval:" + period +")";
|
|
||||||
+ } else {
|
|
||||||
+ name += " (Single)";
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ if (plugin == null) {
|
|
||||||
+ return Timings.ofSafe(null, name, TimingsManager.PLUGIN_GROUP_HANDLER);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return Timings.ofSafe(plugin, name);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Get a named timer for the specified entity type to track type specific timings.
|
|
||||||
+ * @param entity
|
|
||||||
+ * @return
|
|
||||||
+ */
|
|
||||||
+ public static Timing getEntityTimings(Entity entity) {
|
|
||||||
+ String entityType = entity.getClass().getName();
|
|
||||||
+ return Timings.ofSafe("Minecraft", "## tickEntity - " + entityType, tickEntityTimer);
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ /**
|
|
||||||
+ * Get a named timer for the specified tile entity type to track type specific timings.
|
|
||||||
+ * @param entity
|
|
||||||
+ * @return
|
|
||||||
+ */
|
|
||||||
+ public static Timing getTileEntityTimings(TileEntity entity) {
|
|
||||||
+ String entityType = entity.getClass().getName();
|
|
||||||
+ return Timings.ofSafe("Minecraft", "## tickTileEntity - " + entityType, tickTileEntityTimer);
|
|
||||||
+ }
|
|
||||||
+ public static Timing getCancelTasksTimer() {
|
|
||||||
+ return Timings.ofSafe("Cancel Tasks");
|
|
||||||
+ }
|
|
||||||
+ public static Timing getCancelTasksTimer(Plugin plugin) {
|
|
||||||
+ return Timings.ofSafe(plugin, "Cancel Tasks");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static void stopServer() {
|
|
||||||
+ TimingsManager.stopServer();
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ public static Timing getBlockTiming(Block block) {
|
|
||||||
+ return Timings.ofSafe("## Scheduled Block: " + block.getName());
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
diff --git a/src/main/java/org/spigotmc/timings/WorldTimingsHandler.java b/src/main/java/org/spigotmc/timings/WorldTimingsHandler.java
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/src/main/java/org/spigotmc/timings/WorldTimingsHandler.java
|
|
||||||
@@ -0,0 +0,0 @@
|
|
||||||
+package org.spigotmc.timings;
|
|
||||||
+
|
|
||||||
+import net.minecraft.server.World;
|
|
||||||
+
|
|
||||||
+/**
|
|
||||||
+ * Set of timers per world, to track world specific timings.
|
|
||||||
+ */
|
|
||||||
+public class WorldTimingsHandler {
|
|
||||||
+ public final Timing mobSpawn;
|
|
||||||
+ public final Timing doChunkUnload;
|
|
||||||
+ public final Timing doPortalForcer;
|
|
||||||
+ public final Timing scheduledBlocks;
|
|
||||||
+ public final Timing scheduledBlocksCleanup;
|
|
||||||
+ public final Timing scheduledBlocksTicking;
|
|
||||||
+ public final Timing chunkTicks;
|
|
||||||
+ public final Timing chunkTicksBlocks;
|
|
||||||
+ public final Timing doVillages;
|
|
||||||
+ public final Timing doChunkMap;
|
|
||||||
+ public final Timing doChunkGC;
|
|
||||||
+ public final Timing doSounds;
|
|
||||||
+ public final Timing entityRemoval;
|
|
||||||
+ public final Timing entityTick;
|
|
||||||
+ public final Timing tileEntityTick;
|
|
||||||
+ public final Timing tileEntityPending;
|
|
||||||
+ public final Timing tracker;
|
|
||||||
+ public final Timing doTick;
|
|
||||||
+ public final Timing tickEntities;
|
|
||||||
+
|
|
||||||
+ public final Timing syncChunkLoadTimer;
|
|
||||||
+ public final Timing syncChunkLoadDataTimer;
|
|
||||||
+ public final Timing syncChunkLoadStructuresTimer;
|
|
||||||
+ public final Timing syncChunkLoadEntitiesTimer;
|
|
||||||
+ public final Timing syncChunkLoadTileEntitiesTimer;
|
|
||||||
+ public final Timing syncChunkLoadTileTicksTimer;
|
|
||||||
+ public final Timing syncChunkLoadPostTimer;
|
|
||||||
+
|
|
||||||
+ public WorldTimingsHandler(World server) {
|
|
||||||
+ String name = server.worldData.getName() +" - ";
|
|
||||||
+
|
|
||||||
+ mobSpawn = Timings.ofSafe(name + "mobSpawn");
|
|
||||||
+ doChunkUnload = Timings.ofSafe(name + "doChunkUnload");
|
|
||||||
+ scheduledBlocks = Timings.ofSafe(name + "Scheduled Blocks");
|
|
||||||
+ scheduledBlocksCleanup = Timings.ofSafe(name + "Scheduled Blocks - Cleanup");
|
|
||||||
+ scheduledBlocksTicking = Timings.ofSafe(name + "Scheduled Blocks - Ticking");
|
|
||||||
+ chunkTicks = Timings.ofSafe(name + "Chunk Ticks");
|
|
||||||
+ chunkTicksBlocks = Timings.ofSafe(name + "Chunk Ticks - Blocks");
|
|
||||||
+ doVillages = Timings.ofSafe(name + "doVillages");
|
|
||||||
+ doChunkMap = Timings.ofSafe(name + "doChunkMap");
|
|
||||||
+ doSounds = Timings.ofSafe(name + "doSounds");
|
|
||||||
+ doChunkGC = Timings.ofSafe(name + "doChunkGC");
|
|
||||||
+ doPortalForcer = Timings.ofSafe(name + "doPortalForcer");
|
|
||||||
+ entityTick = Timings.ofSafe(name + "entityTick");
|
|
||||||
+ entityRemoval = Timings.ofSafe(name + "entityRemoval");
|
|
||||||
+ tileEntityTick = Timings.ofSafe(name + "tileEntityTick");
|
|
||||||
+ tileEntityPending = Timings.ofSafe(name + "tileEntityPending");
|
|
||||||
+
|
|
||||||
+ syncChunkLoadTimer = Timings.ofSafe(name + "syncChunkLoad");
|
|
||||||
+ syncChunkLoadDataTimer = Timings.ofSafe(name + "syncChunkLoad - Data");
|
|
||||||
+ syncChunkLoadStructuresTimer = Timings.ofSafe(name + "chunkLoad - Structures");
|
|
||||||
+ syncChunkLoadEntitiesTimer = Timings.ofSafe(name + "chunkLoad - Entities");
|
|
||||||
+ syncChunkLoadTileEntitiesTimer = Timings.ofSafe(name + "chunkLoad - TileEntities");
|
|
||||||
+ syncChunkLoadTileTicksTimer = Timings.ofSafe(name + "chunkLoad - TileTicks");
|
|
||||||
+ syncChunkLoadPostTimer = Timings.ofSafe(name + "chunkLoad - Post");
|
|
||||||
+
|
|
||||||
+ tracker = Timings.ofSafe(name + "tracker");
|
|
||||||
+ doTick = Timings.ofSafe(name + "doTick");
|
|
||||||
+ tickEntities = Timings.ofSafe(name + "tickEntities");
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
--
|
--
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren