 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel vocabs vocabs.loader tools.time vocabs.hierarchy
 arrays assocs io.styles io help.markup prettyprint sequences
-continuations debugger math namespaces memory ;
+continuations debugger math namespaces memory fry ;
 IN: benchmark
 
 <PRIVATE

        V{ } clone timings set
        V{ } clone errors set
        "benchmark" child-vocab-names
        [ run-benchmark ] each
        timings get
        errors get


PRIVATE>

: (run-benchmark) ( vocab -- time )
    [ 5 ] dip '[ gc [ _ run ] benchmark ] replicate infimum ;

: run-benchmark ( vocab -- )
    [ "=== " write print flush ] [
        [ [ require ] [ (run-benchmark) ] [ ] tri timings ]
        [ swap errors ]
        recover get set-at
    ] bi ;
