2017-10-19 33 views
0

Dites que j'ai une application qui essaie de relier une chaîne avec un int. Il y a beaucoup de chaînes et je veux garder une liste des N qui ont eu lieu.Cache LRU pondéré. Y a-t-il un nom pour cette méthodologie?

Par exemple, disent les chaînes ressemblait à ceci:

item 0 = "Foo" 
item 1 = "Foo" 
item 2 = "Boo" 
item 3 = "Boo" 
item 4 = "Bar" 
item 5 = "Sar" 

Dis mon cache a un plafond de 3. Voici comment je veux qu'il comporte:

item 0 = TryGet "Foo" - Add. "Foo" occurrences = 1 
item 1 = TryGet "Foo" - return. "Foo" occurrences = 2 
item 2 = TryGet "Boo" - Add. "Boo" occurrences = 1 
item 3 = TryGet "Boo" - return. "Boo" occurrences = 2 
item 4 = TryGet "Bar" - Add. "Bar" occurrences = 1 
item 5 = TryGet "Sar" - At capacity. Remove elem with lowest occurrences, "Bar". Add "Sar" 

Ainsi, chaque élément de cache en cours obtient un poids et à la découverte d'un nouvel objet quand il est plein, nous rejetons l'élément avec le plus petit nombre d'occurrences get. Y a-t-il un nom pour ce genre d'algorithme de mise en cache?

EDIT: Je cherchais les moins fréquemment utilisés

https://en.wikipedia.org/wiki/Cache_replacement_policies#Least-Frequently_Used_.28LFU.29

+0

est-ce pas précisément ce que [MRU] (https: // fr .wikipedia.org/wiki/Cache_replacement_policies # Least_Recently_Used_.28LRU.29) (le terme que vous utilisez vous-même) signifie? –

+0

@ 500-InternalServerError: le cache souhaité de l'OP utilise une politique d'expulsion la moins fréquemment utilisée. Un cache LRU expulse le moins * récemment * utilisé. –

+2

Vous recherchez un cache LFU (moins fréquemment utilisé): https://en.wikipedia.org/wiki/Cache_replacement_policies#Least-Frequently_Used_.28LFU.29 –

Répondre

0

que je recherchais les moins fréquemment utilisés