From 1b550cbd32a3a65056ccb15b14d2bd5d30194aeb Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Fri, 2 Sep 2022 15:34:09 +0200 Subject: [PATCH] Change how profiler data is transferred from constraints reactor --- .../core/internal/EvaluationSessionImpl.kt | 21 +++++++------------ .../reactor/evaluation/EvaluationSession.java | 4 ++++ .../mps/logic/reactor/util/Profiler.kt | 8 +++---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt index 2d340422..c68ad7d1 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/internal/EvaluationSessionImpl.kt @@ -137,6 +137,8 @@ internal class EvaluationSessionImpl private constructor ( var token: SessionToken? = null + var profiler: Profiler? = null + override fun withTrace(computingTracer: EvaluationTrace): EvaluationSession.Config { this.evaluationTrace = computingTracer return this @@ -147,6 +149,11 @@ internal class EvaluationSessionImpl private constructor ( return this } + override fun withProfiler(profiler: Profiler?): EvaluationSession.Config { + this.profiler = profiler + return this + } + override fun withIncrSpec(ispec: IncrementalSpec): EvaluationSession.Config { return this } @@ -160,11 +167,6 @@ internal class EvaluationSessionImpl private constructor ( var session = Backend.ourBackend.ourSession.get() if (session != null) throw IllegalStateException("session already active") - @Suppress("UNCHECKED_CAST") - val durations = parameters[ParameterKey.of("profiling.data", MutableMap::class.java)] - as MutableMap? - val profiler = durations?.let { Profiler() } - session = EvaluationSessionImpl(program, supervisor, evaluationTrace, profiler, parameters) Backend.ourBackend.ourSession.set(session) try { @@ -172,15 +174,6 @@ internal class EvaluationSessionImpl private constructor ( return session.launch(token, main) } finally { - try { - profiler?.run { - formattedData().entries.forEach { e -> durations.put(e.key, e.value) } - clear() - } - } - catch (t: Throwable) { - // avoid nested failure - } Backend.ourBackend.ourSession.set(null) } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java index be061a6a..1a16acfb 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java @@ -19,6 +19,8 @@ package jetbrains.mps.logic.reactor.evaluation; import jetbrains.mps.logic.reactor.program.IncrementalSpec; import jetbrains.mps.logic.reactor.program.Program; +import jetbrains.mps.logic.reactor.util.Profiler; + import java.util.Collection; /** @@ -80,6 +82,8 @@ public abstract class EvaluationSession { public Config withSessionToken(SessionToken token) { return this; } + public Config withProfiler(Profiler profiler) { return this; } + @Deprecated(forRemoval = true) public Config withIncrSpec(IncrementalSpec ispec) { return this; } diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt index f5af725f..4360dee7 100644 --- a/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt +++ b/reactor/Core/src/jetbrains/mps/logic/reactor/util/Profiler.kt @@ -72,16 +72,16 @@ class Profiler { //sort in-place descending Collections.sort(parentName2Dur) { e1, e2 -> if (e2.value < e1.value) -1 else 1 } - val sb = StringBuilder("time %1\$Ts.%1\$TLs (%2\$d times)".format(millis(data.dur), data.freq)) + val sb = StringBuilder("[time: %1\$Ts.%1\$TLs count: %2\$d]".format(millis(data.dur), data.freq)) parentName2Dur .asSequence() .takeWhile { (_, dur) -> parentsToReport > 0 && millis(dur) > 0 } .forEach { (parentName, dur) -> parentsToReport -= millis(dur) - sb.append("\n -- ${parentName}") - .append(" time %1\$Ts.%1\$TLs".format(millis(dur))) - .append(" (%1\$d times)".format(data.parentFreqs[parentName] ?: 0)) } + sb.append("\n \\-- ${parentName}") + .append(" [time: %1\$Ts.%1\$TLs".format(millis(dur))) + .append(" count: %1\$d]".format(data.parentFreqs[parentName] ?: 0)) } name to sb.toString() }.toMap()