xref: /f-stack/app/redis-5.0.5/deps/lua/test/fib.lua (revision 572c4311)
1-- fibonacci function with cache
2
3-- very inefficient fibonacci function
4function fib(n)
5	N=N+1
6	if n<2 then
7		return n
8	else
9		return fib(n-1)+fib(n-2)
10	end
11end
12
13-- a general-purpose value cache
14function cache(f)
15	local c={}
16	return function (x)
17		local y=c[x]
18		if not y then
19			y=f(x)
20			c[x]=y
21		end
22		return y
23	end
24end
25
26-- run and time it
27function test(s,f)
28	N=0
29	local c=os.clock()
30	local v=f(n)
31	local t=os.clock()-c
32	print(s,n,v,t,N)
33end
34
35n=arg[1] or 24		-- for other values, do lua fib.lua XX
36n=tonumber(n)
37print("","n","value","time","evals")
38test("plain",fib)
39fib=cache(fib)
40test("cached",fib)
41