]> gitweb.factorcode.org Git - factor.git/blob - extra/reports/optimizer/optimizer.factor
b51fa5c8ee8a244ad9857e5c0c7816cee96f48fa
[factor.git] / extra / reports / optimizer / optimizer.factor
1 ! Copyright (C) 2008 Slava Pestov.\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 USING: accessors assocs words sequences arrays compiler\r
4 tools.time io.styles io prettyprint vocabs kernel sorting\r
5 generator optimizer math math.order math.statistics combinators\r
6 optimizer.debugger ;\r
7 IN: report.optimizer\r
8 \r
9 : table. ( alist -- )\r
10     20 short tail*\r
11     standard-table-style\r
12     [\r
13         [ [ [ pprint-cell ] each ] with-row ] each\r
14     ] tabular-output ;\r
15 \r
16 : results ( results quot title -- )\r
17     print\r
18     [ second ] prepose\r
19     [ [ compare ] curry sort table. ]\r
20     [\r
21         map\r
22         [ "Mean: " write mean >float . ]\r
23         [ "Median: " write median >float . ]\r
24         [ "Standard deviation: " write std >float . ]\r
25         tri\r
26     ] 2bi ; inline\r
27 \r
28 : optimization-passes ( word -- n )\r
29     word-dataflow nip 1 count-optimization-passes nip ;\r
30 \r
31 : optimizer-measurements ( -- alist )\r
32     all-words [ compiled>> ] filter\r
33     [ dup [ optimization-passes ] benchmark 2array ] { } map>assoc ;\r
34 \r
35 : optimizer-measurements. ( alist -- )\r
36     {\r
37         [ [ first ] "Optimizer passes:" results ]\r
38         [ [ second ] "Compile times:" results ]\r
39     } cleave ;\r
40 \r
41 : optimizer-report ( -- )\r
42     optimizer-measurements optimizer-measurements. ;\r
43 \r
44 MAIN: optimizer-report\r