X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Fcompilation%2FCompilationTimer.java;h=14e7d620b582109e93af20d3450044fb765424b8;hp=91215886255e02c05d25f7b43835afa2cdb4c29f;hb=fad36d463b75c3a9944d875fc627c3533f6da74d;hpb=969bd23cab98a79ca9101af33334000879fb60c5 diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CompilationTimer.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CompilationTimer.java index 912158862..14e7d620b 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CompilationTimer.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/compilation/CompilationTimer.java @@ -1,56 +1,56 @@ -package org.simantics.scl.compiler.compilation; - -import gnu.trove.map.hash.TObjectLongHashMap; - -import java.util.ArrayList; - -public class CompilationTimer { - private long initialTime, previousTime; - private ArrayList entries = new ArrayList(); - private static TObjectLongHashMap GLOBAL_TIMES = new TObjectLongHashMap(); - - private static class TimerEntry { - public final String phaseName; - public final long time; - public final long cumulativeTime; - - public TimerEntry(String phaseName, long time, long cumulativeTime) { - this.phaseName = phaseName; - this.time = time; - this.cumulativeTime = cumulativeTime; - } - } - - public CompilationTimer() { - initialTime = previousTime = System.nanoTime(); - } - - public void phaseFinished(String phaseName) { - long time = System.nanoTime(); - entries.add(new TimerEntry(phaseName, time-previousTime, time-initialTime)); - previousTime = time; - } - - public void suspendTimer() { - long time = System.nanoTime(); - initialTime -= time; - previousTime -= time; - } - - public void continueTimer() { - long time = System.nanoTime(); - initialTime += time; - previousTime += time; - } - - public void report(String moduleName) { - synchronized(GLOBAL_TIMES) { - System.out.println(moduleName); - for(TimerEntry entry : entries) { - long globalTime = GLOBAL_TIMES.adjustOrPutValue(entry.phaseName, entry.time, entry.time); - System.out.println(" " + entry.phaseName + " " + entry.time*1e-6 - + "ms (cumulative: " + entry.cumulativeTime*1e-6 + "ms, global: " + globalTime*1e-6 + ")"); - } - } - } -} +package org.simantics.scl.compiler.compilation; + +import java.util.ArrayList; + +import gnu.trove.map.hash.TObjectLongHashMap; + +public class CompilationTimer { + private long initialTime, previousTime; + private ArrayList entries = new ArrayList(); + private static TObjectLongHashMap GLOBAL_TIMES = new TObjectLongHashMap(); + + private static class TimerEntry { + public final String phaseName; + public final long time; + public final long cumulativeTime; + + public TimerEntry(String phaseName, long time, long cumulativeTime) { + this.phaseName = phaseName; + this.time = time; + this.cumulativeTime = cumulativeTime; + } + } + + public CompilationTimer() { + initialTime = previousTime = System.nanoTime(); + } + + public void phaseFinished(String phaseName) { + long time = System.nanoTime(); + entries.add(new TimerEntry(phaseName, time-previousTime, time-initialTime)); + previousTime = time; + } + + public void suspendTimer() { + long time = System.nanoTime(); + initialTime -= time; + previousTime -= time; + } + + public void continueTimer() { + long time = System.nanoTime(); + initialTime += time; + previousTime += time; + } + + public void report(String moduleName) { + synchronized(GLOBAL_TIMES) { + System.out.println(moduleName); + for(TimerEntry entry : entries) { + long globalTime = GLOBAL_TIMES.adjustOrPutValue(entry.phaseName, entry.time, entry.time); + System.out.println(" " + entry.phaseName + " " + entry.time*1e-6 + + "ms (cumulative: " + entry.cumulativeTime*1e-6 + "ms, global: " + globalTime*1e-6 + ")"); + } + } + } +}