From e6d4b9054e2ea88a159aa5b6c6a9b159dbd713a6 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Tue, 26 Mar 2013 17:35:04 -0700 Subject: [PATCH] benchmark.hash-sets: do more benching (create sets in a literal). Don't run the "intersects?" test on old hash-sets, they are sloooooow. --- extra/benchmark/hash-sets/hash-sets.factor | 26 +++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) 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