# HG changeset patch # User wenzelm # Date 1495111089 -7200 # Node ID 00e8b836d4db528cd6ce1d7bbfd04ea1c841987c # Parent 177b90f33f4051d54983ba739810b901a543fe70 uniform heap_scale; tuned; diff -r 177b90f33f40 -r 00e8b836d4db src/Pure/Admin/build_status.scala --- a/src/Pure/Admin/build_status.scala Thu May 18 14:14:20 2017 +0200 +++ b/src/Pure/Admin/build_status.scala Thu May 18 14:38:09 2017 +0200 @@ -80,7 +80,7 @@ entries.forall(entry => entry.maximum_heap > 0 || entry.average_heap > 0 || - entry.final_heap > 0) + entry.stored_heap > 0) } sealed case class Entry( pull_date: Date, @@ -90,7 +90,7 @@ ml_timing: Timing, maximum_heap: Long, average_heap: Long, - final_heap: Long) + stored_heap: Long) sealed case class Image(name: String, width: Int, height: Int) { @@ -174,7 +174,7 @@ ML_Statistics( if (ml_statistics) Properties.uncompress(res.bytes(Build_Log.Data.ml_statistics)) - else Nil, heading = session_name + " (Isabelle/ " + isabelle_version + ")") + else Nil, heading = session_name + " (Isabelle/" + isabelle_version + ")") val entry = Entry( @@ -193,7 +193,7 @@ Build_Log.Data.ml_timing_gc), maximum_heap = ml_stats.maximum_heap_size, average_heap = ml_stats.average_heap_size, - final_heap = res.long(Build_Log.Data.heap_size)) + stored_heap = ML_Statistics.heap_scale(res.long(Build_Log.Data.heap_size))) val sessions = data_entries.getOrElse(data_name, Map.empty) val entries = sessions.get(session_name).map(_.entries) getOrElse Nil @@ -229,13 +229,8 @@ def clean_name(name: String): String = name.flatMap(c => if (c == ' ' || c == '/') "_" else if (c == ',') "" else c.toString) - def heap_scale(x: Long): Long = x / 1024 / 1024 - def print_heap(x: Long): Option[String] = - { - val y = heap_scale(x) - if (y == 0L) None else Some(y.toString + " M") - } + if (x == 0L) None else Some(x.toString + " M") HTML.write_document(target_dir, "index.html", List(HTML.title("Isabelle build status")), @@ -274,9 +269,9 @@ entry.timing.resources.minutes, entry.ml_timing.elapsed.minutes, entry.ml_timing.resources.minutes, - heap_scale(entry.maximum_heap), - heap_scale(entry.average_heap), - heap_scale(entry.final_heap)).mkString(" ")))) + entry.maximum_heap, + entry.average_heap, + entry.stored_heap).mkString(" ")))) val max_time = ((0.0 /: session.entries){ case (m, entry) => @@ -394,8 +389,8 @@ HTML.text("maximum heap:") -> HTML.text(s)).toList ::: print_heap(session.head.average_heap).map(s => HTML.text("average heap:") -> HTML.text(s)).toList ::: - print_heap(session.head.final_heap).map(s => - HTML.text("final heap:") -> HTML.text(s)).toList ::: + print_heap(session.head.stored_heap).map(s => + HTML.text("stored heap:") -> HTML.text(s)).toList ::: proper_string(session.head.isabelle_version).map(s => HTML.text("Isabelle version:") -> HTML.text(s)).toList ::: proper_string(session.head.afp_version).map(s => diff -r 177b90f33f40 -r 00e8b836d4db src/Pure/ML/ml_statistics.scala --- a/src/Pure/ML/ml_statistics.scala Thu May 18 14:14:20 2017 +0200 +++ b/src/Pure/ML/ml_statistics.scala Thu May 18 14:38:09 2017 +0200 @@ -25,10 +25,16 @@ def now(props: Properties.T): Double = Now.unapply(props).get - /* standard fields */ + /* heap */ val HEAP_SIZE = "size_heap" + def heap_scale(x: Long): Long = x / 1024 / 1024 + def heap_scale(x: Double): Double = heap_scale(x.toLong).toLong + + + /* standard fields */ + type Fields = (String, List[String]) val tasks_fields: Fields = @@ -109,7 +115,11 @@ val data = SortedMap.empty[String, Double] ++ speeds ++ (for ((x, y) <- props.iterator if x != Now.name) - yield (x.intern, java.lang.Double.parseDouble(y))) + yield { + val z = java.lang.Double.parseDouble(y) + (x.intern, if (heap_fields._2.contains(x)) heap_scale(z) else z) + }) + result += ML_Statistics.Entry(time, data) } result.toList