blob: d946946a44917ae4467ad0ac6de25d003382b657 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
-- very inefficient fibonacci function
function fib(n)
N=N+1
if n<2 then
return n
else
return fib(n-1)+fib(n-2)
end
end
-- 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")
|