diff --git a/extra/benchmark/hash-sets/hash-sets.factor b/extra/benchmark/hash-sets/hash-sets.factor index 2aabff14e4..cef4f99622 100644 --- a/extra/benchmark/hash-sets/hash-sets.factor +++ b/extra/benchmark/hash-sets/hash-sets.factor @@ -1,24 +1,30 @@ -USING: combinators hash-sets kernel math.combinatorics sequences sets ; +USING: combinators fry hash-sets kernel literals +math math.combinatorics sequences sets ; IN: benchmark.hash-sets -: make-sets ( -- seq ) - { 10 100 1,000 10,000 100,000 1,000000 } [ iota >hash-set ] map ; +CONSTANT: test-sets $[ + { 10 100 1,000 10,000 50,000 100,000 } + [ iota >hash-set ] map dup append +] + +: do-times ( n quot: ( set1 set2 -- set' ) -- ) + '[ 2dup @ drop ] times 2drop ; inline : bench-sets ( seq -- ) 2 [ first2 { - [ union drop ] - [ intersect drop ] - [ intersects? drop ] - [ diff drop ] - [ set= drop ] - [ subset? drop ] + [ 3 [ union ] do-times ] + [ 5 [ intersect ] do-times ] + [ 100,000 [ intersects? ] do-times ] + [ 3 [ diff ] do-times ] + [ 50 [ set= ] do-times ] + [ 25 [ subset? ] do-times ] } 2cleave ] each-combination ; : hash-sets-benchmark ( -- ) - make-sets bench-sets ; + test-sets bench-sets ; MAIN: hash-sets-benchmark