summaryrefslogtreecommitdiff
path: root/test/fib.lua
diff options
context:
space:
mode:
authorLua Team <team@lua.org>2000-11-06 12:00:00 +0000
committerrepogen <>2000-11-06 12:00:00 +0000
commit8cb71cb5548e3138e5d4e4744f52c79d9fafb116 (patch)
tree25859eb162c67eafc46866e0ec3a9a7ebf93157a /test/fib.lua
parentb7610da5fed99f59ac73ae452da8839a0f2c1bda (diff)
downloadlua-github-4.0.tar.gz
Lua 4.04.0
Diffstat (limited to 'test/fib.lua')
-rw-r--r--test/fib.lua30
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")