12345678910111213141516171819202122232425262728293031323334353637383940 |
- -- fibonacci function with cache
- -- 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 general-purpose value cache
- 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
- -- run and time it
- function test(s,f)
- N=0
- local c=os.clock()
- local v=f(n)
- local t=os.clock()-c
- print(s,n,v,t,N)
- end
- n=arg[1] or 24 -- for other values, do lua fib.lua XX
- n=tonumber(n)
- print("","n","value","time","evals")
- test("plain",fib)
- fib=cache(fib)
- test("cached",fib)
|