Root/sie_fs/root/scripts/lua/test/fib.lua

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

Archive Download this file

Branches:
master



interactive