Add Aikar's timings patches.

By: md_5 <md_5@live.com.au>
This commit is contained in:
Spigot
2013-01-19 19:28:14 +11:00
parent fe0864051c
commit 942a08c36a
3 changed files with 527 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
From a1e1f7ed9dab3b4b7889ae54120fc1e24ccb0c12 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 9 Jan 2013 16:53:45 -0500
Subject: [PATCH] Measure the duration of the entire timings run.
---
src/main/java/org/bukkit/command/defaults/TimingsCommand.java | 4 ++++
src/main/java/org/bukkit/plugin/SimplePluginManager.java | 2 ++
2 files changed, 6 insertions(+)
diff --git a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
index 29ebbe0..94cd62c 100644
--- a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
@@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableList;
public class TimingsCommand extends BukkitCommand {
private static final List<String> TIMINGS_SUBCOMMANDS = ImmutableList.of("merged", "reset", "separate");
+ public static long timingStart = 0; // Spigot
public TimingsCommand(String name) {
super(name);
this.description = "Records timings for all plugin events";
@@ -50,9 +51,11 @@ public class TimingsCommand extends BukkitCommand {
}
}
}
+ timingStart = System.nanoTime(); // Spigot
sender.sendMessage("Timings reset");
} else if ("merged".equals(args[0]) || separate) {
+ long sampleTime = System.nanoTime() - timingStart; // Spigot
int index = 0;
int pluginIdx = 0;
File timingFolder = new File("timings");
@@ -92,6 +95,7 @@ public class TimingsCommand extends BukkitCommand {
}
fileTimings.println(" Total time " + totalTime + " (" + totalTime / 1000000000 + "s)");
}
+ fileTimings.println("Sample time " + sampleTime + " (" + sampleTime / 1000000000 + "s)"); // Spigot
sender.sendMessage("Timings written to " + timings.getPath());
if (separate) sender.sendMessage("Names written to " + names.getPath());
} catch (IOException e) {
diff --git a/src/main/java/org/bukkit/plugin/SimplePluginManager.java b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
index d4f6bf3..4049d3a 100644
--- a/src/main/java/org/bukkit/plugin/SimplePluginManager.java
+++ b/src/main/java/org/bukkit/plugin/SimplePluginManager.java
@@ -23,6 +23,7 @@ import org.bukkit.Server;
import org.bukkit.command.Command;
import org.bukkit.command.PluginCommandYamlParser;
import org.bukkit.command.SimpleCommandMap;
+import org.bukkit.command.defaults.TimingsCommand;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
import org.bukkit.event.HandlerList;
@@ -274,6 +275,7 @@ public final class SimplePluginManager implements PluginManager {
}
}
+ TimingsCommand.timingStart = System.nanoTime(); // Spigot
return result.toArray(new Plugin[result.size()]);
}
--
1.8.1-rc2

View File

@@ -0,0 +1,133 @@
From 1b7af1803b6c1fdcc7f0d8574f37000bbe10923f Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 9 Jan 2013 22:18:26 -0500
Subject: [PATCH] Add CustomTimingsHandler for adding new CraftBukkit custom
timings
---
.../org/bukkit/command/defaults/ReloadCommand.java | 2 +
.../bukkit/command/defaults/TimingsCommand.java | 4 ++
.../org/bukkit/event/CustomTimingsHandler.java | 60 ++++++++++++++++++++++
3 files changed, 66 insertions(+)
create mode 100644 src/main/java/org/bukkit/event/CustomTimingsHandler.java
diff --git a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
index fb3c90f..fffafa5 100644
--- a/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/ReloadCommand.java
@@ -6,6 +6,7 @@ import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
+import org.bukkit.event.CustomTimingsHandler;
public class ReloadCommand extends BukkitCommand {
public ReloadCommand(String name) {
@@ -20,6 +21,7 @@ public class ReloadCommand extends BukkitCommand {
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
if (!testPermission(sender)) return true;
+ CustomTimingsHandler.reload(); // Spigot
Bukkit.reload();
Command.broadcastCommandMessage(sender, ChatColor.GREEN + "Reload complete.");
diff --git a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
index 94cd62c..e0628d0 100644
--- a/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
+++ b/src/main/java/org/bukkit/command/defaults/TimingsCommand.java
@@ -10,6 +10,7 @@ import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
+import org.bukkit.event.CustomTimingsHandler;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.Plugin;
@@ -51,6 +52,7 @@ public class TimingsCommand extends BukkitCommand {
}
}
}
+ CustomTimingsHandler.reload(); // Spigot
timingStart = System.nanoTime(); // Spigot
sender.sendMessage("Timings reset");
} else if ("merged".equals(args[0]) || separate) {
@@ -95,8 +97,10 @@ public class TimingsCommand extends BukkitCommand {
}
fileTimings.println(" Total time " + totalTime + " (" + totalTime / 1000000000 + "s)");
}
+ CustomTimingsHandler.printTimings(fileTimings); // Spigot
fileTimings.println("Sample time " + sampleTime + " (" + sampleTime / 1000000000 + "s)"); // Spigot
sender.sendMessage("Timings written to " + timings.getPath());
+ sender.sendMessage("Paste contents of file into form at http://aikar.co/timings.php to read results."); // Spigot
if (separate) sender.sendMessage("Names written to " + names.getPath());
} catch (IOException e) {
} finally {
diff --git a/src/main/java/org/bukkit/event/CustomTimingsHandler.java b/src/main/java/org/bukkit/event/CustomTimingsHandler.java
new file mode 100644
index 0000000..83294e3
--- /dev/null
+++ b/src/main/java/org/bukkit/event/CustomTimingsHandler.java
@@ -0,0 +1,60 @@
+package org.bukkit.event;
+
+
+import org.bukkit.Bukkit;
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+
+/**
+ * Extends RegisteredListener to include timing information
+ */
+public class CustomTimingsHandler {
+
+ private final String name;
+ public int count = 0;
+ public long totalTime = 0;
+ long start = 0;
+
+ static public ArrayList<CustomTimingsHandler> allList = new ArrayList<>();
+ public CustomTimingsHandler(String name) {
+ this.name = name;
+ allList.add(this);
+ }
+
+ static public void printTimings(PrintStream printStream) {
+ printStream.println("Minecraft - ** indicates it's already counted by another timing");
+ for (CustomTimingsHandler t : allList) {
+ long time = t.totalTime;
+ int count = t.count;
+ if (count == 0) continue;
+ long avg = time / count;
+
+ printStream.println(" " + t.name + " Time: " + time + " Count: " + count + " Avg: " + avg);
+ }
+ }
+
+ static public void reload() {
+ if (!Bukkit.getServer().getPluginManager().useTimings()) return;
+ for (CustomTimingsHandler t : allList) {
+ t.reset();
+ }
+ }
+
+ public void startTiming() {
+ if (!Bukkit.getServer().getPluginManager().useTimings()) return;
+ start = System.nanoTime();
+ }
+
+ public void stopTiming() {
+ if (!Bukkit.getServer().getPluginManager().useTimings()) return;
+ totalTime += System.nanoTime() - start;
+ count++;
+ }
+
+ public void reset() {
+ count = 0;
+ totalTime = 0;
+ }
+}
+
--
1.8.1-rc2