src/Pure/ML/ml_statistics_polyml-5.5.0.ML
author wenzelm
Fri, 23 Aug 2013 20:35:50 +0200
changeset 53171 a5e54d4d9081
parent 51990 cc66addbba6d
permissions -rw-r--r--
added Theory.setup convenience;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50255
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/ML/ml_statistics_polyml-5.5.0.ML
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     3
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     4
ML runtime statistics for Poly/ML 5.5.0.
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     5
*)
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     6
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     7
signature ML_STATISTICS =
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     8
sig
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
     9
  val get: unit -> Properties.T
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    10
end;
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    11
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    12
structure ML_Statistics: ML_STATISTICS =
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    13
struct
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    14
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    15
fun get () =
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    16
  let
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    17
    val
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    18
     {gcFullGCs,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    19
      gcPartialGCs,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    20
      sizeAllocation,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    21
      sizeAllocationFree,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    22
      sizeHeap,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    23
      sizeHeapFreeLastFullGC,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    24
      sizeHeapFreeLastGC,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    25
      threadsInML,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    26
      threadsTotal,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    27
      threadsWaitCondVar,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    28
      threadsWaitIO,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    29
      threadsWaitMutex,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    30
      threadsWaitSignal,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    31
      timeGCSystem,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    32
      timeGCUser,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    33
      timeNonGCSystem,
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    34
      timeNonGCUser,
50656
561d79d7031f include user counters as well;
wenzelm
parents: 50280
diff changeset
    35
      userCounters} = PolyML.Statistics.getLocalStats ();
561d79d7031f include user counters as well;
wenzelm
parents: 50280
diff changeset
    36
    val user_counters =
561d79d7031f include user counters as well;
wenzelm
parents: 50280
diff changeset
    37
      Vector.foldri
50738
d5725e56cd04 more direct property names;
wenzelm
parents: 50656
diff changeset
    38
        (fn (i, j, res) => ("user_counter" ^ Markup.print_int i, Markup.print_int j) :: res)
50656
561d79d7031f include user counters as well;
wenzelm
parents: 50280
diff changeset
    39
        [] userCounters;
50255
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    40
  in
50280
0eb9b5d09f31 more uniform ML statistics;
wenzelm
parents: 50255
diff changeset
    41
    [("full_GCs", Markup.print_int gcFullGCs),
50255
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    42
     ("partial_GCs", Markup.print_int gcPartialGCs),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    43
     ("size_allocation", Markup.print_int sizeAllocation),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    44
     ("size_allocation_free", Markup.print_int sizeAllocationFree),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    45
     ("size_heap", Markup.print_int sizeHeap),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    46
     ("size_heap_free_last_full_GC", Markup.print_int sizeHeapFreeLastFullGC),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    47
     ("size_heap_free_last_GC", Markup.print_int sizeHeapFreeLastGC),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    48
     ("threads_in_ML", Markup.print_int threadsInML),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    49
     ("threads_total", Markup.print_int threadsTotal),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    50
     ("threads_wait_condvar", Markup.print_int threadsWaitCondVar),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    51
     ("threads_wait_IO", Markup.print_int threadsWaitIO),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    52
     ("threads_wait_mutex", Markup.print_int threadsWaitMutex),
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    53
     ("threads_wait_signal", Markup.print_int threadsWaitSignal),
51990
cc66addbba6d more uniform Markup.print_real;
wenzelm
parents: 51432
diff changeset
    54
     ("time_CPU", Markup.print_real (Time.toReal timeNonGCSystem + Time.toReal timeNonGCUser)),
cc66addbba6d more uniform Markup.print_real;
wenzelm
parents: 51432
diff changeset
    55
     ("time_GC", Markup.print_real (Time.toReal timeGCSystem + Time.toReal timeGCUser))] @
50656
561d79d7031f include user counters as well;
wenzelm
parents: 50280
diff changeset
    56
    user_counters
50255
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    57
  end;
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    58
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    59
end;
d0ec1f0d1d7d some support for ML runtime statistics;
wenzelm
parents:
diff changeset
    60