custom inlining for diff and intersect, when given a literal sequence. this cuts off 1/3 of the running time of a microbenchmark
							parent
							
								
									6c87f20286
								
							
						
					
					
						commit
						d2fe75276e
					
				| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
USING: kernel sequences words fry generic accessors
 | 
			
		||||
classes.tuple classes classes.algebra definitions
 | 
			
		||||
stack-checker.state quotations classes.tuple.private math
 | 
			
		||||
math.partial-dispatch math.private math.intervals
 | 
			
		||||
math.partial-dispatch math.private math.intervals sets.private
 | 
			
		||||
math.floats.private math.integers.private layouts math.order
 | 
			
		||||
vectors hashtables combinators effects generalizations assocs
 | 
			
		||||
sets combinators.short-circuit sequences.private locals
 | 
			
		||||
| 
						 | 
				
			
			@ -290,3 +290,13 @@ CONSTANT: lookup-table-at-max 256
 | 
			
		|||
    ] [ drop f ] if ;
 | 
			
		||||
 | 
			
		||||
\ at* [ at-quot ] 1 define-partial-eval
 | 
			
		||||
 | 
			
		||||
: diff-quot ( seq -- quot: ( seq' -- seq'' ) )
 | 
			
		||||
    tester '[ [ @ not ] filter ] ;
 | 
			
		||||
 | 
			
		||||
\ diff [ diff-quot ] 1 define-partial-eval
 | 
			
		||||
 | 
			
		||||
: intersect-quot ( seq -- quot: ( seq' -- seq'' ) )
 | 
			
		||||
    tester '[ _ filter ] ;
 | 
			
		||||
 | 
			
		||||
\ intersect [ intersect-quot ] 1 define-partial-eval
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue