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
							parent
							
								
									1f13eefad2
								
							
						
					
					
						commit
						e6d4b9054e
					
				| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue