src/HOL/Matrix_LP/Compute_Oracle/report.ML
author wenzelm
Tue, 03 Dec 2019 16:40:04 +0100
changeset 71222 2bc39c80a95d
parent 62391 1658fc9b2618
permissions -rw-r--r--
clarified export of consts: recursion is accessible via spec_rules;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25218
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     1
structure Report =
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     2
struct
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     3
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     4
local
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     5
32740
9dd0a2f83429 explicit indication of Unsynchronized.ref;
wenzelm
parents: 30187
diff changeset
     6
    val report_depth = Unsynchronized.ref 0
25218
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     7
    fun space n = if n <= 0 then "" else (space (n-1))^" "
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     8
    fun report_space () = space (!report_depth)
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
     9
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    10
in
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    11
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    12
fun timeit f =
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    13
    let
42012
2c3fe3cbebae structure Timing: covers former start_timing/end_timing and Output.timeit etc;
wenzelm
parents: 37872
diff changeset
    14
        val t1 = Timing.start ()
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 32740
diff changeset
    15
        val x = f ()
42012
2c3fe3cbebae structure Timing: covers former start_timing/end_timing and Output.timeit etc;
wenzelm
parents: 37872
diff changeset
    16
        val t2 = Timing.message (Timing.result t1)
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 32740
diff changeset
    17
        val _ = writeln ((report_space ()) ^ "--> "^t2)
25218
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    18
    in
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 32740
diff changeset
    19
        x       
25218
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    20
    end
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    21
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    22
fun report s f = 
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    23
let
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    24
    val _ = writeln ((report_space ())^s)
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    25
    val _ = report_depth := !report_depth + 1
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    26
    val x = timeit f
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    27
    val _ = report_depth := !report_depth - 1
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    28
in
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    29
    x
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    30
end
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    31
fcf0f50e478c better compute oracle
obua
parents:
diff changeset
    32
end
62391
1658fc9b2618 more canonical names
nipkow
parents: 46988
diff changeset
    33
end