Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FIFO cache vs LRU cache

I'm really sorry for such simple question. I just want to be sure that I understand FIFO cache model correctly and I hope that someone will help me with that :) LRU cache deletes entry that was accessed least recently if the cache is full. FIFO deletes the entry that was added earlier(?) than other entries if the cache needs free space (for example if 'a' - 'v' - 'f' - 'k' is entries in the cache and 'a' is the oldest entry then cache will delete 'a' if it will need free space).

Am I right?

like image 893
Andrey Yaskulsky Avatar asked Mar 26 '13 18:03

Andrey Yaskulsky


People also ask

Is FIFO better than LRU?

Sleator and Tarjan proved that the competitive ratio of LRU and FIFO is k . In practice, however, LRU is known to perform much better than FIFO. It is believed that the superiority of LRU can be attributed to locality of referencelocality of referenceIn computer science, locality of reference, also known as the principle of locality, is the tendency of a processor to access the same set of memory locations repetitively over a short period of time. There are two basic types of reference locality – temporal and spatial locality.https://en.wikipedia.org › wiki › Locality_of_referenceLocality of reference - Wikipedia exhibited in request sequences.

Why is LRU better than FIFO random?

If it's single function or you want the most speed from something your willing to optimise, and or you don't care about worst case, then LRU is probably what you want. If you have very few way's LRU is likely what you want unless you have a very specific scenario then FIFO might be OK.

Why is LRU better than FIFO page replacement?

LRU keeps the things that were most recently used in memory. FIFO keeps the things that were most recently added. LRU is, in general, more efficient, because there are generally memory items that are added once and never used again, and there are items that are added and used frequently.

What is FIFO cache?

A First-In-First-Out cache is one that uses queuing logic for its backing store, expunging the elements at the front of the queue when a predetermined threshold is exceeded. In simple terms, the FIFO cache will remove the element that has been in the cache the longest.


2 Answers

You are correct.

Think of FIFO as cars going through a tunnel. The first car to go in the tunnel will be the first one to go out the other side.

Think of the LRU cache as cleaning out the garage. You will throw away items that you have not used for a long time, and keep the ones that you use frequently. An evolution of that algorithm (an improvement to simple LRU) would be to throw away items that have not been used for a long time, and are not expensive to replace if you need them after all.

like image 159
Eric J. Avatar answered Sep 22 '22 17:09

Eric J.


Yes, LRU cache is based on least recent use of on object in cache but FIFO is based on the time an object is cached.

like image 32
omermuhammed Avatar answered Sep 22 '22 17:09

omermuhammed