 
 PRIVATE>
 
+: (run-benchmark) ( vocab -- time )
+    [ 5 ] dip '[ gc [ _ run ] benchmark ] replicate infimum ;
+
 : run-benchmark ( vocab -- )
     [ "=== " write print flush ] [
-        [ [ require ] [ gc [ run ] benchmark ] [ ] tri timings ]
+        [ [ require ] [ (run-benchmark) ] [ ] tri timings ]
         [ swap errors ]
         recover get set-at
     ] bi ;

! 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 ;
IN: benchmark

<PRIVATE

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