equal
deleted
inserted
replaced
15 clean_name: Boolean = false, |
15 clean_name: Boolean = false, |
16 progress: Progress = new Progress |
16 progress: Progress = new Progress |
17 ): Unit = { |
17 ): Unit = { |
18 val store = Sessions.store(options) |
18 val store = Sessions.store(options) |
19 |
19 |
20 using(store.open_database_context())(db_context => { |
20 using(store.open_database_context()) { db_context => |
21 val result = |
21 val result = |
22 db_context.input_database(session)((db, name) => Some(store.read_theories(db, name))) |
22 db_context.input_database(session)((db, name) => Some(store.read_theories(db, name))) |
23 result match { |
23 result match { |
24 case None => error("Missing build database for session " + quote(session)) |
24 case None => error("Missing build database for session " + quote(session)) |
25 case Some(used_theories) => |
25 case Some(used_theories) => |
36 (Protocol.ML_Profiling(report), _) <- snapshot.messages.iterator |
36 (Protocol.ML_Profiling(report), _) <- snapshot.messages.iterator |
37 } yield if (clean_name) report.clean_name else report).toList |
37 } yield if (clean_name) report.clean_name else report).toList |
38 |
38 |
39 for (report <- ML_Profiling.account(reports)) progress.echo(report.print) |
39 for (report <- ML_Profiling.account(reports)) progress.echo(report.print) |
40 } |
40 } |
41 }) |
41 } |
42 } |
42 } |
43 |
43 |
44 |
44 |
45 /* Isabelle tool wrapper */ |
45 /* Isabelle tool wrapper */ |
46 |
46 |
47 val isabelle_tool = |
47 val isabelle_tool = |
48 Isabelle_Tool("profiling_report", "report Poly/ML profiling information from log files", |
48 Isabelle_Tool("profiling_report", "report Poly/ML profiling information from log files", |
49 Scala_Project.here, |
49 Scala_Project.here, |
50 args => { |
50 { args => |
51 var theories: List[String] = Nil |
51 var theories: List[String] = Nil |
52 var clean_name = false |
52 var clean_name = false |
53 var options = Options.init() |
53 var options = Options.init() |
54 |
54 |
55 val getopts = |
55 val getopts = Getopts(""" |
56 Getopts(""" |
|
57 Usage: isabelle profiling_report [OPTIONS] SESSION |
56 Usage: isabelle profiling_report [OPTIONS] SESSION |
58 |
57 |
59 Options are: |
58 Options are: |
60 -T NAME restrict to given theories (multiple options possible) |
59 -T NAME restrict to given theories (multiple options possible) |
61 -c clean function names |
60 -c clean function names |
66 """, |
65 """, |
67 "T:" -> (arg => theories = theories ::: List(arg)), |
66 "T:" -> (arg => theories = theories ::: List(arg)), |
68 "c" -> (_ => clean_name = true), |
67 "c" -> (_ => clean_name = true), |
69 "o:" -> (arg => options = options + arg)) |
68 "o:" -> (arg => options = options + arg)) |
70 |
69 |
71 val more_args = getopts(args) |
70 val more_args = getopts(args) |
72 val session_name = |
71 val session_name = |
73 more_args match { |
72 more_args match { |
74 case List(session_name) => session_name |
73 case List(session_name) => session_name |
75 case _ => getopts.usage() |
74 case _ => getopts.usage() |
76 } |
75 } |
77 |
76 |
78 val progress = new Console_Progress() |
77 val progress = new Console_Progress() |
79 |
78 |
80 profiling_report(options, session_name, theories = theories, |
79 profiling_report(options, session_name, theories = theories, |
81 clean_name = clean_name, progress = progress) |
80 clean_name = clean_name, progress = progress) |
82 }) |
81 }) |
83 } |
82 } |