So this is going to be a short tutorial and will just be talking about why you should cache and a basic example on how you can.

Alright so if for some reason you have a program which detects the Fibonacci sequence (don’t ask why I have this)

As a bench mark I added in a goes variable to see how many times the function was called

```
local Goes = 0
local function Fibonacci(n)
Goes += 1
if not tonumber(n) then
return
else
n = tonumber(n)
end
if n == 0 then return n end
if n == 1 then return n end
return Fibonacci(n-1,cache) + Fibonacci(n-2,cache)
end
Fibonacci(10)
print(Goes)
```

And it uses recursion. (This is applicable to most other functions which use a recursion type)

Then it it great for small things like 10 however is called **177** times!

And if I put this up to 25 my script times out!

An answer to this would be caching

Now the definition of caching is this: Caching is **the process of storing copies of files in a cache, or temporary storage location, so that they can be accessed more quickly**

but that could be simplified to: **Easy place for me to get repeated values**

If I just added that into my code:

```
local Goes = 0
local function Fibonacci(n,cache)
Goes += 1
if not tonumber(n) then
return
else
n = tonumber(n)
end
if n == 0 then return n end
if n == 1 then return n end
if cache[n] then
return cache[n]
end
cache[n] = Fibonacci(n-1,cache) + Fibonacci(n-2,cache)
return Fibonacci(n-1,cache) + Fibonacci(n-2,cache)
end
Fibonacci(10,{})
print(Goes)
```

The function is only called 37 times.

I did it with 100 and only did it 397 times!. With an extra 5 or so lines I managed to save so much performance.

So in conclusion caching is good because it saves space, performance and makes recursive scripts more effective

Alright that’s it. I did say it would be short and just wanted to show the benefits of it.

Thanks for reading