Optimizer report now shows number of passes
parent
4c4c47de77
commit
b48aca89a6
|
@ -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. ;
|
||||||
|
|
|
@ -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 -- )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue