]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/memoize/memoize.factor
core: Rename iota to <iota> so we can have TUPLE: iota ... ; instead of TUPLE: iota...
[factor.git] / extra / benchmark / memoize / memoize.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel math memoize sequences ;
4 IN: benchmark.memoize
5
6 MEMO: mem0 ( -- ) ;
7 MEMO: mem1 ( n -- n ) 1 + ;
8 MEMO: mem2 ( n n -- n ) + ;
9 MEMO: mem3 ( n n n -- n ) + + ;
10 MEMO: mem4 ( n n n n -- n ) + + + ;
11
12 : memoize-benchmark ( -- )
13     1000 [
14         1000 <iota> [
15             mem0 [ mem1 ] keep [ mem2 ] 2keep [ mem3 ] 3keep mem4 drop
16         ] each
17     ] times ;
18
19 MAIN: memoize-benchmark