equal
deleted
inserted
replaced
94 finished_entries_size >= 3 && |
94 finished_entries_size >= 3 && |
95 finished_entries.forall(entry => |
95 finished_entries.forall(entry => |
96 entry.maximum_heap > 0 || |
96 entry.maximum_heap > 0 || |
97 entry.average_heap > 0 || |
97 entry.average_heap > 0 || |
98 entry.stored_heap > 0) |
98 entry.stored_heap > 0) |
|
99 |
|
100 def make_csv: CSV.File = |
|
101 { |
|
102 val header = |
|
103 List("session_name", |
|
104 "chapter", |
|
105 "pull_date", |
|
106 "isabelle_version", |
|
107 "afp_version", |
|
108 "timing_elapsed", |
|
109 "timing_cpu", |
|
110 "timing_gc", |
|
111 "ml_timing_elapsed", |
|
112 "ml_timing_cpu", |
|
113 "ml_timing_gc", |
|
114 "maximum_heap", |
|
115 "average_heap", |
|
116 "stored_heap", |
|
117 "status") |
|
118 val date_format = Date.Format("uuuu-MM-dd HH:mm:ss") |
|
119 val records = |
|
120 for (entry <- entries) yield { |
|
121 CSV.Record(name, |
|
122 entry.chapter, |
|
123 date_format(entry.pull_date), |
|
124 entry.isabelle_version, |
|
125 entry.afp_version, |
|
126 entry.timing.elapsed.ms, |
|
127 entry.timing.cpu.ms, |
|
128 entry.timing.gc.ms, |
|
129 entry.ml_timing.elapsed.ms, |
|
130 entry.ml_timing.cpu.ms, |
|
131 entry.ml_timing.gc.ms, |
|
132 entry.maximum_heap, |
|
133 entry.average_heap, |
|
134 entry.stored_heap, |
|
135 entry.status) |
|
136 } |
|
137 CSV.File(name, header, records) |
|
138 } |
99 } |
139 } |
100 sealed case class Entry( |
140 sealed case class Entry( |
101 chapter: String, |
141 chapter: String, |
102 pull_date: Date, |
142 pull_date: Date, |
103 isabelle_version: String, |
143 isabelle_version: String, |
317 progress.echo("output " + quote(data_name)) |
357 progress.echo("output " + quote(data_name)) |
318 |
358 |
319 val dir = target_dir + Path.basic(clean_name(data_name)) |
359 val dir = target_dir + Path.basic(clean_name(data_name)) |
320 Isabelle_System.mkdirs(dir) |
360 Isabelle_System.mkdirs(dir) |
321 |
361 |
|
362 val data_files = |
|
363 (for (session <- data_entry.sessions) yield { |
|
364 val csv_file = session.make_csv |
|
365 csv_file.write(dir) |
|
366 session.name -> csv_file |
|
367 }).toMap |
|
368 |
322 val session_plots = |
369 val session_plots = |
323 Par_List.map((session: Session) => |
370 Par_List.map((session: Session) => |
324 Isabelle_System.with_tmp_file(session.name, "data") { data_file => |
371 Isabelle_System.with_tmp_file(session.name, "data") { data_file => |
325 Isabelle_System.with_tmp_file(session.name, "gnuplot") { gnuplot_file => |
372 Isabelle_System.with_tmp_file(session.name, "gnuplot") { gnuplot_file => |
326 |
373 |
448 List( |
495 List( |
449 HTML.section(HTML.id("session_" + session.name), session.name), |
496 HTML.section(HTML.id("session_" + session.name), session.name), |
450 HTML.par( |
497 HTML.par( |
451 HTML.description( |
498 HTML.description( |
452 List( |
499 List( |
|
500 HTML.text("data:") -> |
|
501 List(HTML.link(data_files(session.name).file_name, HTML.text("CSV"))), |
453 HTML.text("timing:") -> HTML.text(session.head.timing.message_resources), |
502 HTML.text("timing:") -> HTML.text(session.head.timing.message_resources), |
454 HTML.text("ML timing:") -> HTML.text(session.head.ml_timing.message_resources)) ::: |
503 HTML.text("ML timing:") -> HTML.text(session.head.ml_timing.message_resources)) ::: |
455 print_heap(session.head.maximum_heap).map(s => |
504 print_heap(session.head.maximum_heap).map(s => |
456 HTML.text("maximum heap:") -> HTML.text(s)).toList ::: |
505 HTML.text("maximum heap:") -> HTML.text(s)).toList ::: |
457 print_heap(session.head.average_heap).map(s => |
506 print_heap(session.head.average_heap).map(s => |