Skip to content

Commit

Permalink
JSON profile printer outputs durations in seconds, instead of nanos
Browse files Browse the repository at this point in the history
  • Loading branch information
iconara committed Aug 23, 2012
1 parent c5ec25f commit 3a720ed
Showing 1 changed file with 12 additions and 6 deletions.
18 changes: 12 additions & 6 deletions src/org/jruby/runtime/profile/JsonProfilePrinter.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -28,11 +28,13 @@


import java.io.PrintStream; import java.io.PrintStream;
import java.util.Iterator; import java.util.Iterator;
import java.util.Locale;


import org.jruby.util.collections.IntHashMap; import org.jruby.util.collections.IntHashMap;




public class JsonProfilePrinter extends ProfilePrinter { public class JsonProfilePrinter extends ProfilePrinter {
private static Locale JSON_LOCALE = Locale.ROOT;


public JsonProfilePrinter(ProfileData profileData) { public JsonProfilePrinter(ProfileData profileData) {
super(profileData); super(profileData);
Expand Down Expand Up @@ -68,9 +70,9 @@ private String methodToJson(MethodData method) {
"id", quote(method.serialNumber), "id", quote(method.serialNumber),
"name", quote(methodName(method.serialNumber)), "name", quote(methodName(method.serialNumber)),
"total_calls", String.valueOf(method.totalCalls()), "total_calls", String.valueOf(method.totalCalls()),
"total_time", String.valueOf(method.totalTime()), "total_time", nanosToSecondsString(method.totalTime()),
"self_time", String.valueOf(method.selfTime()), "self_time", nanosToSecondsString(method.selfTime()),
"child_time", String.valueOf(method.childTime()), "child_time", nanosToSecondsString(method.childTime()),
"parents", parentCallsToJson(method), "parents", parentCallsToJson(method),
"children", childCallsToJson(method) "children", childCallsToJson(method)
); );
Expand Down Expand Up @@ -110,12 +112,16 @@ private String callToJson(int serial, int calls, InvocationSet invocations) {
return toJsonObject( return toJsonObject(
"id", quote(serial), "id", quote(serial),
"total_calls", String.valueOf(calls), "total_calls", String.valueOf(calls),
"total_time", String.valueOf(invocations.totalTime()), "total_time", nanosToSecondsString(invocations.totalTime()),
"self_time", String.valueOf(invocations.selfTime()), "self_time", nanosToSecondsString(invocations.selfTime()),
"child_time", String.valueOf(invocations.childTime()) "child_time", nanosToSecondsString(invocations.childTime())
); );
} }


private String nanosToSecondsString(long nanos) {
return String.format(JSON_LOCALE, "%f", nanos/1.0e9);
}

private String quote(String str) { private String quote(String str) {
return String.format("\"%s\"", str); return String.format("\"%s\"", str);
} }
Expand Down

0 comments on commit 3a720ed

Please sign in to comment.