benchmark.timers: adding a timer benchmark.
							parent
							
								
									10a4413bec
								
							
						
					
					
						commit
						5262c8a1ae
					
				| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
USING: concurrency.flags kernel math namespaces timers ;
 | 
			
		||||
IN: benchmark.timers
 | 
			
		||||
 | 
			
		||||
SYMBOL: loop-flag
 | 
			
		||||
SYMBOL: loop-count
 | 
			
		||||
SYMBOL: loop-max
 | 
			
		||||
 | 
			
		||||
: inner-loop ( -- )
 | 
			
		||||
    loop-count counter loop-max get-global > [
 | 
			
		||||
        loop-flag get-global raise-flag
 | 
			
		||||
    ] when ;
 | 
			
		||||
 | 
			
		||||
: outer-loop ( n -- )
 | 
			
		||||
    loop-max set-global
 | 
			
		||||
    0 loop-count set-global
 | 
			
		||||
    <flag> loop-flag set-global
 | 
			
		||||
    [ inner-loop ] 1 every
 | 
			
		||||
    loop-flag get-global wait-for-flag
 | 
			
		||||
    stop-timer ;
 | 
			
		||||
 | 
			
		||||
: timers-benchmark ( -- )
 | 
			
		||||
    20,000 [ outer-loop ] [ loop-max get-global assert= ] bi ;
 | 
			
		||||
 | 
			
		||||
MAIN: timers-benchmark
 | 
			
		||||
 
 | 
			
		||||
		Loading…
	
		Reference in New Issue