]> gitweb.factorcode.org Git - factor.git/blob - extra/reports/optimizer/optimizer.factor
51eae24333941e10e7c3b5a481de16b472d1f3bb
[factor.git] / extra / reports / optimizer / optimizer.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: report.optimizer\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\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 ; inline\r
17 \r
18 : optimizer-measurements ( -- alist )\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 \r
26 : optimizer-measurements. ( alist -- )\r
27     [ [ first ] "Worst number of optimizer passes:" results ]\r
28     [ [ second ] "Worst compile times:" results ] bi ;\r
29 \r
30 : optimizer-report ( -- )\r
31     optimizer-measurements optimizer-measurements. ;\r
32 \r
33 MAIN: optimizer-report\r