# HG changeset patch # User wenzelm # Date 1690225511 -7200 # Node ID 14219730e04f606ef21ae05c7c24a28dfa45579c # Parent dfe60f5594bd06ef49fdc14fb6834924d5ae358c more statistics; diff -r dfe60f5594bd -r 14219730e04f src/Pure/Tools/profiling.scala --- a/src/Pure/Tools/profiling.scala Mon Jul 24 16:11:16 2023 +0200 +++ b/src/Pure/Tools/profiling.scala Mon Jul 24 21:05:11 2023 +0200 @@ -31,6 +31,7 @@ sealed case class Session_Statistics( theories: Int = 0, + garbage_theories: Int = 0, locales: Int = 0, locale_thms: Int = 0, global_thms: Int = 0, @@ -48,21 +49,22 @@ private val decode_result: XML.Decode.T[Session_Statistics] = (body: XML.Body) => { - val (a, (b, (c, (d, (e, (f, (g, (h, i)))))))) = { + val (a, (b, (c, (d, (e, (f, (g, (h, (i, j))))))))) = { import XML.Decode._ - pair(int, pair(int, pair(int, pair(int, - pair(long, pair(long, pair(long, pair(long, long))))))))(body) + pair(int, pair(int, pair(int, pair(int, pair(int, + pair(long, pair(long, pair(long, pair(long, long)))))))))(body) } Session_Statistics( theories = a, - locales = b, - locale_thms = c, - global_thms = d, - sizeof_thys_id = Space.bytes(e), - sizeof_thms_id = Space.bytes(f), - sizeof_terms = Space.bytes(g), - sizeof_types = Space.bytes(h), - sizeof_spaces = Space.bytes(i)) + garbage_theories = b, + locales = c, + locale_thms = d, + global_thms = e, + sizeof_thys_id = Space.bytes(f), + sizeof_thms_id = Space.bytes(g), + sizeof_terms = Space.bytes(h), + sizeof_types = Space.bytes(i), + sizeof_spaces = Space.bytes(j)) } def make( @@ -91,6 +93,7 @@ new Statistics(parent = parent, session = session_name, theories = session.theories, + garbage_theories = session.garbage_theories, locales = session.locales, locale_thms = session.locale_thms, global_thms = session.global_thms, @@ -107,6 +110,7 @@ val header0: List[String] = List( "theories", + "garbage_theories%", "locales", "locale_thms", "global_thms", @@ -127,6 +131,7 @@ val parent: Option[Statistics] = None, val session: String = "", val theories: Int = 0, + val garbage_theories: Int = 0, val locales: Int = 0, val locale_thms: Int = 0, val global_thms: Int = 0, @@ -137,6 +142,9 @@ val types_size: Space = Space.zero, val spaces_size: Space = Space.zero ) { + def garbage_theories_percentage: Percentage = + percentage(garbage_theories, theories + garbage_theories) + private def size_percentage(space: Space): Percentage = percentage_space(space, heap_size) @@ -146,6 +154,7 @@ val fields0: List[Any] = List( theories, + garbage_theories_percentage.toString, locales, locale_thms, global_thms, @@ -168,6 +177,7 @@ new Statistics(parent = None, session = session, theories = other.cumulative.theories + theories, + garbage_theories = other.cumulative.garbage_theories + garbage_theories, locales = other.cumulative.locales + locales, locale_thms = other.cumulative.locale_thms + locale_thms, global_thms = other.cumulative.global_thms + global_thms, diff -r dfe60f5594bd -r 14219730e04f src/Tools/profiling.ML --- a/src/Tools/profiling.ML Mon Jul 24 16:11:16 2023 +0200 +++ b/src/Tools/profiling.ML Mon Jul 24 21:05:11 2023 +0200 @@ -13,6 +13,7 @@ val all_thms: theory -> thm list type session_statistics = {theories: int, + garbage_theories: int, locales: int, locale_thms: int, global_thms: int, @@ -84,6 +85,7 @@ type session_statistics = {theories: int, + garbage_theories: int, locales: int, locale_thms: int, global_thms: int, @@ -103,6 +105,7 @@ val loader_thys = map Thy_Info.get_theory (Thy_Info.get_names ()); val loaded_thys = filter theories_member loader_thys; + val loaded_context_thys = filter theories_member context_thys; val all_thys = loader_thys @ context_thys; val base_thys = filter_out theories_member all_thys; @@ -111,8 +114,12 @@ types = all_types, spaces = all_spaces} = session_content all_thys; val {thys_id = base_thys_id, thms_id = base_thms_id, terms = base_terms, types = base_types, spaces = base_spaces} = session_content base_thys; + + val n = length loaded_thys; + val m = length loaded_context_thys - n; in - {theories = length loaded_thys, + {theories = n, + garbage_theories = m, locales = Integer.sum (map (length o locales) loaded_thys), locale_thms = Integer.sum (map (length o locales_thms) loaded_thys), global_thms = Integer.sum (map (length o global_thms) loaded_thys), @@ -133,16 +140,17 @@ val encode_result : session_statistics XML.Encode.T = (fn {theories = a, - locales = b, - locale_thms = c, - global_thms = d, - sizeof_thys_id = e, - sizeof_thms_id = f, - sizeof_terms = g, - sizeof_types = h, - sizeof_spaces = i} => (a, (b, (c, (d, (e, (f, (g, (h, i))))))))) #> + garbage_theories = b, + locales = c, + locale_thms = d, + global_thms = e, + sizeof_thys_id = f, + sizeof_thms_id = g, + sizeof_terms = h, + sizeof_types = i, + sizeof_spaces = j} => ((a, (b, (c, (d, (e, (f, (g, (h, (i, j))))))))))) #> let open XML.Encode - in pair int (pair int (pair int (pair int (pair int (pair int (pair int (pair int int))))))) end; + in pair int (pair int (pair int (pair int (pair int (pair int (pair int (pair int (pair int int)))))))) end; in