From ba4c012000dcfd2619633a89f7a0f09ec68eca42 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 9 May 2013 12:01:17 +0300 Subject: [PATCH] Profiler can be paused --- .../src/org/jetbrains/jet/utils/Profiler.java | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/compiler/util/src/org/jetbrains/jet/utils/Profiler.java b/compiler/util/src/org/jetbrains/jet/utils/Profiler.java index 84621742021..06f4a68dde2 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/Profiler.java +++ b/compiler/util/src/org/jetbrains/jet/utils/Profiler.java @@ -57,7 +57,9 @@ public class Profiler { private final String name; private final PrintStream out; - private long start; + private long start = Long.MAX_VALUE; + private long cumulative = 0; + private boolean paused = true; private StackTraceElement[] stackTrace; private boolean mute; @@ -114,16 +116,24 @@ public class Profiler { } public Profiler start() { - start = System.nanoTime(); + if (!paused) { + start = System.nanoTime(); + paused = false; + } return this; } public Profiler end() { - long delta = System.nanoTime() - start; + long result = cumulative; + if (!paused) { + result += System.nanoTime() - start; + } + paused = true; + cumulative = 0; OUT_LOCK.lock(); try { - println(name, " took ", format(delta)); + println(name, " took ", format(result)); printStackTrace(); } finally { @@ -133,6 +143,14 @@ public class Profiler { return this; } + public Profiler pause() { + if (!paused) { + cumulative += System.nanoTime() - start; + paused = true; + } + return this; + } + public Profiler mute() { mute = true; return this;