benchmark.hash-sets: do more benching (create sets in a literal).

Don't run the "intersects?" test on old hash-sets, they are sloooooow.
db4
John Benediktsson 2013-03-26 17:35:04 -07:00
parent 1f13eefad2
commit e6d4b9054e
1 changed files with 16 additions and 10 deletions

View File

@ -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