mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Add support for printing trace information
This commit is contained in:
1
.gitattributes
vendored
1
.gitattributes
vendored
@@ -16886,6 +16886,7 @@ forge-gui/src/main/html/js/jquery/jquery-1.9.1.min.js -text
|
|||||||
forge-gui/src/main/html/js/observable.js -text
|
forge-gui/src/main/html/js/observable.js -text
|
||||||
forge-gui/src/main/html/js/socket.js -text
|
forge-gui/src/main/html/js/socket.js -text
|
||||||
forge-gui/src/main/java/forge/FThreads.java -text
|
forge-gui/src/main/java/forge/FThreads.java -text
|
||||||
|
forge-gui/src/main/java/forge/FTrace.java -text
|
||||||
forge-gui/src/main/java/forge/GuiBase.java -text
|
forge-gui/src/main/java/forge/GuiBase.java -text
|
||||||
forge-gui/src/main/java/forge/UiCommand.java svneol=native#text/plain
|
forge-gui/src/main/java/forge/UiCommand.java svneol=native#text/plain
|
||||||
forge-gui/src/main/java/forge/achievement/Achievement.java -text
|
forge-gui/src/main/java/forge/achievement/Achievement.java -text
|
||||||
|
|||||||
@@ -222,6 +222,7 @@ public class Forge implements ApplicationListener {
|
|||||||
@Override
|
@Override
|
||||||
public void render() {
|
public void render() {
|
||||||
try {
|
try {
|
||||||
|
forge.FTrace.get("Render").start();
|
||||||
ImageCache.allowSingleLoad();
|
ImageCache.allowSingleLoad();
|
||||||
ForgeAnimation.advanceAll();
|
ForgeAnimation.advanceAll();
|
||||||
|
|
||||||
@@ -253,6 +254,7 @@ public class Forge implements ApplicationListener {
|
|||||||
graphics.end();
|
graphics.end();
|
||||||
BugReporter.reportException(ex, GuiBase.getInterface());
|
BugReporter.reportException(ex, GuiBase.getInterface());
|
||||||
}
|
}
|
||||||
|
forge.FTrace.get("Render").end();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -293,6 +295,10 @@ public class Forge implements ApplicationListener {
|
|||||||
screens.clear();
|
screens.clear();
|
||||||
graphics.dispose();
|
graphics.dispose();
|
||||||
SoundSystem.instance.dispose();
|
SoundSystem.instance.dispose();
|
||||||
|
try {
|
||||||
|
ExceptionHandler.unregisterErrorHandling();
|
||||||
|
}
|
||||||
|
catch (Exception e) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
//log message to Forge.log file
|
//log message to Forge.log file
|
||||||
|
|||||||
70
forge-gui/src/main/java/forge/FTrace.java
Normal file
70
forge-gui/src/main/java/forge/FTrace.java
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
package forge;
|
||||||
|
|
||||||
|
import java.text.NumberFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class FTrace {
|
||||||
|
private static long appStartTime;
|
||||||
|
private static Map<String, FTrace> traces = new HashMap<String, FTrace>();
|
||||||
|
private static SimpleDateFormat guiFormatter = new SimpleDateFormat("hh:mm:ss.SSS");
|
||||||
|
|
||||||
|
public static void initialize() {
|
||||||
|
appStartTime = new Date().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static FTrace get(String name0) {
|
||||||
|
FTrace trace = traces.get(name0);
|
||||||
|
if (trace == null) {
|
||||||
|
trace = new FTrace(name0);
|
||||||
|
traces.put(name0, trace);
|
||||||
|
}
|
||||||
|
return trace;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String formatTimestamp(Date timestamp) {
|
||||||
|
if (GuiBase.getInterface().isGuiThread()) {
|
||||||
|
return guiFormatter.format(timestamp); //use cache formatter for better performance on GUI thread
|
||||||
|
}
|
||||||
|
return new SimpleDateFormat("hh:mm:ss.SSS").format(timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
//dump total time of all traces into log file
|
||||||
|
public static void dump() {
|
||||||
|
long appTotalTime = new Date().getTime() - appStartTime;
|
||||||
|
NumberFormat percent = NumberFormat.getPercentInstance();
|
||||||
|
|
||||||
|
System.out.println();
|
||||||
|
System.out.println("Forge total time - " + appTotalTime + "ms");
|
||||||
|
for (FTrace trace : traces.values()) {
|
||||||
|
System.out.println(trace.name + " total time - " + trace.totalTime + "ms (" + percent.format((double)trace.totalTime / (double)appTotalTime) + ")");
|
||||||
|
}
|
||||||
|
traces.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
private long startTime;
|
||||||
|
private long totalTime;
|
||||||
|
|
||||||
|
private FTrace(String name0) {
|
||||||
|
name = name0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
Date now = new Date();
|
||||||
|
startTime = now.getTime();
|
||||||
|
System.out.println(name + " start - " + formatTimestamp(now));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void end() {
|
||||||
|
if (startTime == 0) { return; }
|
||||||
|
|
||||||
|
Date now = new Date();
|
||||||
|
long elapsed = now.getTime() - startTime;
|
||||||
|
startTime = 0;
|
||||||
|
totalTime += elapsed;
|
||||||
|
System.out.println(name + " end - " + formatTimestamp(now) + " (" + elapsed + "ms)");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,6 +28,7 @@ import java.lang.Thread.UncaughtExceptionHandler;
|
|||||||
|
|
||||||
import com.esotericsoftware.minlog.Log;
|
import com.esotericsoftware.minlog.Log;
|
||||||
|
|
||||||
|
import forge.FTrace;
|
||||||
import forge.interfaces.IGuiBase;
|
import forge.interfaces.IGuiBase;
|
||||||
import forge.properties.ForgeConstants;
|
import forge.properties.ForgeConstants;
|
||||||
import forge.util.MultiplexOutputStream;
|
import forge.util.MultiplexOutputStream;
|
||||||
@@ -90,6 +91,7 @@ public class ExceptionHandler implements UncaughtExceptionHandler {
|
|||||||
System.setErr(new PrintStream(new MultiplexOutputStream(System.err, logFileStream), true));
|
System.setErr(new PrintStream(new MultiplexOutputStream(System.err, logFileStream), true));
|
||||||
|
|
||||||
Log.debug("Error handling registered!");
|
Log.debug("Error handling registered!");
|
||||||
|
FTrace.initialize();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,6 +99,7 @@ public class ExceptionHandler implements UncaughtExceptionHandler {
|
|||||||
* stream and resets the system output streams.
|
* stream and resets the system output streams.
|
||||||
*/
|
*/
|
||||||
public static void unregisterErrorHandling() throws IOException {
|
public static void unregisterErrorHandling() throws IOException {
|
||||||
|
FTrace.dump(); //dump trace before unregistering error handling
|
||||||
System.setOut(oldSystemOut);
|
System.setOut(oldSystemOut);
|
||||||
System.setErr(oldSystemErr);
|
System.setErr(oldSystemErr);
|
||||||
logFileStream.close();
|
logFileStream.close();
|
||||||
|
|||||||
Reference in New Issue
Block a user