somewhat more uniform timing markup in ML vs. Scala;
authorwenzelm
Sat, 06 Nov 2010 18:10:35 +0100
changeset 406736dcb6cbf0719
parent 40672 2bb7ec08574a
child 40674 4985aaade799
somewhat more uniform timing markup in ML vs. Scala;
src/Pure/General/markup.ML
src/Pure/General/markup.scala
     1.1 --- a/src/Pure/General/markup.ML	Sat Nov 06 17:55:32 2010 +0100
     1.2 +++ b/src/Pure/General/markup.ML	Sat Nov 06 18:10:35 2010 +0100
     1.3 @@ -99,7 +99,10 @@
     1.4    val command_spanN: string val command_span: string -> T
     1.5    val ignored_spanN: string val ignored_span: T
     1.6    val malformed_spanN: string val malformed_span: T
     1.7 -  val timing: timing -> T
     1.8 +  val elapsedN: string
     1.9 +  val cpuN: string
    1.10 +  val gcN: string
    1.11 +  val timingN: string val timing: timing -> T
    1.12    val subgoalsN: string
    1.13    val proof_stateN: string val proof_state: int -> T
    1.14    val stateN: string val state: T
    1.15 @@ -306,11 +309,21 @@
    1.16  val (malformed_spanN, malformed_span) = markup_elem "malformed_span";
    1.17  
    1.18  
    1.19 -(* toplevel *)
    1.20 +(* timing *)
    1.21 +
    1.22 +val timingN = "timing";
    1.23 +val elapsedN = "elapsed";
    1.24 +val cpuN = "cpu";
    1.25 +val gcN = "gc";
    1.26  
    1.27  fun timing ({elapsed, cpu, gc, ...}: timing) =
    1.28 -  ("timing",
    1.29 -    [("elapsed", Time.toString elapsed), ("cpu", Time.toString cpu), ("gc", Time.toString gc)]);
    1.30 +  (timingN,
    1.31 +   [(elapsedN, Time.toString elapsed),
    1.32 +    (cpuN, Time.toString cpu),
    1.33 +    (gcN, Time.toString gc)]);
    1.34 +
    1.35 +
    1.36 +(* toplevel *)
    1.37  
    1.38  val subgoalsN = "subgoals";
    1.39  val (proof_stateN, proof_state) = markup_int "proof_state" subgoalsN;
     2.1 --- a/src/Pure/General/markup.scala	Sat Nov 06 17:55:32 2010 +0100
     2.2 +++ b/src/Pure/General/markup.scala	Sat Nov 06 18:10:35 2010 +0100
     2.3 @@ -216,6 +216,31 @@
     2.4    val MALFORMED_SPAN = "malformed_span"
     2.5  
     2.6  
     2.7 +  /* timing */
     2.8 +
     2.9 +  val TIMING = "timing"
    2.10 +  val ELAPSED = "elapsed"
    2.11 +  val CPU = "cpu"
    2.12 +  val GC = "gc"
    2.13 +
    2.14 +  object Timing
    2.15 +  {
    2.16 +    def apply(timing: isabelle.Timing): Markup =
    2.17 +      Markup(TIMING, List(
    2.18 +        (ELAPSED, Double(timing.elapsed)),
    2.19 +        (CPU, Double(timing.cpu)),
    2.20 +        (GC, Double(timing.gc))))
    2.21 +    def unapply(markup: Markup): Option[isabelle.Timing] =
    2.22 +      markup match {
    2.23 +        case Markup(TIMING, List(
    2.24 +          (ELAPSED, Double(elapsed)),
    2.25 +          (CPU, Double(cpu)),
    2.26 +          (GC, Double(gc)))) => Some(isabelle.Timing(elapsed, cpu, gc))
    2.27 +        case _ => None
    2.28 +      }
    2.29 +  }
    2.30 +
    2.31 +
    2.32    /* toplevel */
    2.33  
    2.34    val SUBGOALS = "subgoals"