]> gitweb.factorcode.org Git - factor.git/blob - extra/optimizer/report/report.factor
Fixing everything for mandatory stack effects
[factor.git] / extra / optimizer / report / report.factor
1 USING: assocs words sequences arrays compiler tools.time\r
2 io.styles io prettyprint vocabs kernel sorting generator\r
3 optimizer math math.order ;\r
4 IN: optimizer.report\r
5 \r
6 : count-optimization-passes ( nodes n -- n )\r
7     >r optimize-1\r
8     [ r> 1+ count-optimization-passes ] [ drop r> ] if ;\r
9 \r
10 : results ( seq -- )\r
11     [ [ second ] prepose compare ] curry sort 20 tail*\r
12     print\r
13     standard-table-style\r
14     [\r
15         [ [ [ pprint-cell ] each ] with-row ] each\r
16     ] tabular-output ;\r
17 \r
18 : optimizer-report ( -- )\r
19     all-words [ compiled? ] filter\r
20     [\r
21         dup [\r
22             word-dataflow nip 1 count-optimization-passes\r
23         ] benchmark 2array\r
24     ] { } map>assoc\r
25     [ first ] "Worst number of optimizer passes:" results\r
26     [ second ] "Worst compile times:" results ;\r
27 \r
28 MAIN: optimizer-report\r