Optimizer report now shows number of passes

db4
Slava Pestov 2008-07-20 01:13:14 -05:00
parent 4c4c47de77
commit b48aca89a6
2 changed files with 21 additions and 20 deletions

View File

@ -3,8 +3,8 @@
USING: classes io kernel kernel.private math.parser namespaces USING: classes io kernel kernel.private math.parser namespaces
optimizer prettyprint prettyprint.backend sequences words arrays optimizer prettyprint prettyprint.backend sequences words arrays
match macros assocs sequences.private generic combinators match macros assocs sequences.private generic combinators
sorting math quotations accessors inference inference.dataflow sorting math quotations accessors inference inference.backend
optimizer.specializers ; inference.dataflow optimizer.specializers generator ;
IN: optimizer.debugger IN: optimizer.debugger
! A simple tool for turning dataflow IR into quotations, for ! A simple tool for turning dataflow IR into quotations, for
@ -135,14 +135,21 @@ M: object node>quot
: optimized-word. ( word ? -- ) >r specialized-def r> optimized-quot. ; : optimized-word. ( word ? -- ) >r specialized-def r> optimized-quot. ;
SYMBOL: pass-count
SYMBOL: words-called SYMBOL: words-called
SYMBOL: generics-called SYMBOL: generics-called
SYMBOL: methods-called SYMBOL: methods-called
SYMBOL: intrinsics-called SYMBOL: intrinsics-called
SYMBOL: node-count SYMBOL: node-count
: dataflow>report ( node -- alist ) : count-optimization-passes ( node n -- node n )
>r optimize-1
[ r> 1+ count-optimization-passes ] [ r> ] if ;
: make-report ( word -- assoc )
[ [
word-dataflow nip 1 count-optimization-passes pass-count set
H{ } clone words-called set H{ } clone words-called set
H{ } clone generics-called set H{ } clone generics-called set
H{ } clone methods-called set H{ } clone methods-called set
@ -164,14 +171,12 @@ SYMBOL: node-count
node-count set node-count set
] H{ } make-assoc ; ] H{ } make-assoc ;
: quot-optimize-report ( quot -- report )
dataflow optimize dataflow>report ;
: word-optimize-report ( word -- report )
def>> quot-optimize-report ;
: report. ( report -- ) : report. ( report -- )
[ [
"==== Optimization passes:" print
pass-count get .
nl
"==== Total number of dataflow nodes:" print "==== Total number of dataflow nodes:" print
node-count get . node-count get .
@ -186,4 +191,4 @@ SYMBOL: node-count
] bind ; ] bind ;
: optimizer-report. ( word -- ) : optimizer-report. ( word -- )
word-optimize-report report. ; make-report report. ;

View File

@ -2,13 +2,10 @@
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs words sequences arrays compiler USING: accessors assocs words sequences arrays compiler
tools.time io.styles io prettyprint vocabs kernel sorting tools.time io.styles io prettyprint vocabs kernel sorting
generator optimizer math math.order math.statistics combinators ; generator optimizer math math.order math.statistics combinators
optimizer.debugger ;
IN: report.optimizer IN: report.optimizer
: count-optimization-passes ( nodes n -- n )
>r optimize-1
[ r> 1+ count-optimization-passes ] [ drop r> ] if ;
: table. ( alist -- ) : table. ( alist -- )
20 short tail* 20 short tail*
standard-table-style standard-table-style
@ -28,13 +25,12 @@ IN: report.optimizer
tri tri
] 2bi ; inline ] 2bi ; inline
: optimization-passes ( word -- n )
word-dataflow nip 1 count-optimization-passes nip ;
: optimizer-measurements ( -- alist ) : optimizer-measurements ( -- alist )
all-words [ compiled>> ] filter all-words [ compiled>> ] filter
[ [ dup [ optimization-passes ] benchmark 2array ] { } map>assoc ;
dup [
word-dataflow nip 1 count-optimization-passes
] benchmark 2array
] { } map>assoc ;
: optimizer-measurements. ( alist -- ) : optimizer-measurements. ( alist -- )
{ {