benchmark.fib8: adding super-fast fibonacci benchmark.
							parent
							
								
									6f5efb83f2
								
							
						
					
					
						commit
						fa534d2507
					
				| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
USING: combinators kernel math memoize ;
 | 
			
		||||
IN: benchmark.fib8
 | 
			
		||||
 | 
			
		||||
MEMO: (faster-fib) ( m -- n )
 | 
			
		||||
    dup 1 > [
 | 
			
		||||
        [ 2/ dup 1 - [ (faster-fib) ] bi@ ] [ 4 mod ] bi {
 | 
			
		||||
            { 1 [ [ 2 * ] dip [ + ] [ - ] 2bi * 2 + ] }
 | 
			
		||||
            { 3 [ [ 2 * ] dip [ + ] [ - ] 2bi * 2 - ] }
 | 
			
		||||
            [ drop dupd 2 * + * ]
 | 
			
		||||
        } case
 | 
			
		||||
    ] when ;
 | 
			
		||||
 | 
			
		||||
: faster-fib ( m -- n )
 | 
			
		||||
    dup 0 >= [ throw ] unless (faster-fib) ;
 | 
			
		||||
 | 
			
		||||
: fib8-benchmark ( -- )
 | 
			
		||||
    100 [
 | 
			
		||||
        \ (faster-fib) reset-memoized
 | 
			
		||||
        100,000 faster-fib log2 69423 assert=
 | 
			
		||||
    ] times ;
 | 
			
		||||
 | 
			
		||||
MAIN: fib8-benchmark
 | 
			
		||||
		Loading…
	
		Reference in New Issue