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