diff options
author | Lua Team <team@lua.org> | 2000-11-06 12:00:00 +0000 |
---|---|---|
committer | repogen <> | 2000-11-06 12:00:00 +0000 |
commit | 8cb71cb5548e3138e5d4e4744f52c79d9fafb116 (patch) | |
tree | 25859eb162c67eafc46866e0ec3a9a7ebf93157a /test/fib.lua | |
parent | b7610da5fed99f59ac73ae452da8839a0f2c1bda (diff) | |
download | lua-github-4.0.tar.gz |
Lua 4.04.0
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") |