diff options
Diffstat (limited to 'test/fib.lua')
-rw-r--r-- | test/fib.lua | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/test/fib.lua b/test/fib.lua index 881cbdc3..d946946a 100644 --- a/test/fib.lua +++ b/test/fib.lua @@ -1,6 +1,7 @@ -- very inefficient fibonacci function function fib(n) + N=N+1 if n<2 then return n else @@ -8,4 +9,31 @@ function fib(n) end end -print(fib(20)) +-- a much faster cached version + +function cache(f) + local c={} + return function (x) + local y=%c[x] + if not y then + y=%f(x) + %c[x]=y + end + return y + end +end + +function test(s) + N=0 + local c=clock() + local v=fib(n) + local t=clock()-c + print(s,n,v,t,N) +end + +n=n or 24 -- for other values, do lua -e n=XX fib.lua +n=tonumber(n) +print("","n","value","time","evals") +test("plain") +fib=cache(fib) +test("cached") |