somewhat more uniform timing markup in ML vs. Scala;
authorwenzelm
Sat, 06 Nov 2010 18:10:35 +0100
changeset 40394 6dcb6cbf0719
parent 40393 2bb7ec08574a
child 40395 4985aaade799
somewhat more uniform timing markup in ML vs. Scala;
src/Pure/General/markup.ML
src/Pure/General/markup.scala
--- a/src/Pure/General/markup.ML	Sat Nov 06 17:55:32 2010 +0100
+++ b/src/Pure/General/markup.ML	Sat Nov 06 18:10:35 2010 +0100
@@ -99,7 +99,10 @@
   val command_spanN: string val command_span: string -> T
   val ignored_spanN: string val ignored_span: T
   val malformed_spanN: string val malformed_span: T
-  val timing: timing -> T
+  val elapsedN: string
+  val cpuN: string
+  val gcN: string
+  val timingN: string val timing: timing -> T
   val subgoalsN: string
   val proof_stateN: string val proof_state: int -> T
   val stateN: string val state: T
@@ -306,11 +309,21 @@
 val (malformed_spanN, malformed_span) = markup_elem "malformed_span";
 
 
-(* toplevel *)
+(* timing *)
+
+val timingN = "timing";
+val elapsedN = "elapsed";
+val cpuN = "cpu";
+val gcN = "gc";
 
 fun timing ({elapsed, cpu, gc, ...}: timing) =
-  ("timing",
-    [("elapsed", Time.toString elapsed), ("cpu", Time.toString cpu), ("gc", Time.toString gc)]);
+  (timingN,
+   [(elapsedN, Time.toString elapsed),
+    (cpuN, Time.toString cpu),
+    (gcN, Time.toString gc)]);
+
+
+(* toplevel *)
 
 val subgoalsN = "subgoals";
 val (proof_stateN, proof_state) = markup_int "proof_state" subgoalsN;
--- a/src/Pure/General/markup.scala	Sat Nov 06 17:55:32 2010 +0100
+++ b/src/Pure/General/markup.scala	Sat Nov 06 18:10:35 2010 +0100
@@ -216,6 +216,31 @@
   val MALFORMED_SPAN = "malformed_span"
 
 
+  /* timing */
+
+  val TIMING = "timing"
+  val ELAPSED = "elapsed"
+  val CPU = "cpu"
+  val GC = "gc"
+
+  object Timing
+  {
+    def apply(timing: isabelle.Timing): Markup =
+      Markup(TIMING, List(
+        (ELAPSED, Double(timing.elapsed)),
+        (CPU, Double(timing.cpu)),
+        (GC, Double(timing.gc))))
+    def unapply(markup: Markup): Option[isabelle.Timing] =
+      markup match {
+        case Markup(TIMING, List(
+          (ELAPSED, Double(elapsed)),
+          (CPU, Double(cpu)),
+          (GC, Double(gc)))) => Some(isabelle.Timing(elapsed, cpu, gc))
+        case _ => None
+      }
+  }
+
+
   /* toplevel */
 
   val SUBGOALS = "subgoals"