Quando vengono effettuate chiamate ripetute di funzione con lo stesso argomento, il calcolo viene ripetuto. Memoizzazione è utile in scenari in cui i risultati delle chiamate di funzione possono essere “salvati” per un uso futuro. Ciò si traduce in un risparmio di tempo e nell’ottimizzazione del codice poiché il codice diventa meno costoso dal punto di vista computazionale. Memorizzazione nella cache è un termine più generale usato per riferirsi alla memorizzazione di qualsiasi dato.
Questo articolo tratterà le diverse strategie di memorizzazione nella cache, considerazioni sulla memorizzazione nella cache e come abilitare e implementare diversi tipi di memorizzazione nella cache per i tuoi script (utilizzando il pacchetto Python e la tua implementazione)!
Esistono diverse strategie per la memorizzazione nella cache in base alle proprie esigenze, ad esempio:
- Utilizzati meno di recente (LRU): rimuove i dati utilizzati meno di recente, il tipo più comune di memorizzazione nella cache
- Usato meno frequentemente (LFU): rimuove i dati utilizzati meno frequentemente
- Primo entrato, primo uscito (FIFO): rimuove i dati più vecchi
- Last-In-First-Out (LIFO): rimuove i dati più recenti
- Utilizzati più di recente (MRU): rimuove i dati utilizzati più di recente
- Sostituzione casuale (RR): rimuove i dati selezionati casualmente
Quando utilizzi la memorizzazione nella cache nelle tue applicazioni, dovresti considerare il file impronta di memoria della cache mentre memorizza informazioni aggiuntive. Se stai decidendo tra diverse implementazioni, in termini di architettura e strutture dati, ci sono alcune considerazioni temporali come:
- Orario di accesso: Per gli argomenti che sono stati calcolati in precedenza, i risultati dovrebbero essere accessibili rapidamente
O(1)
tempo - Orario di inserimento: Per i nuovi argomenti, i dati dovrebbero essere inseriti nella cache, preferibilmente in
O(1)
tempo (a seconda dell’implementazione, alcuni potrebbero richiedereO(n)
tempo, scegli saggiamente!) - Orario di cancellazione: Nel caso…
Fonte: towardsdatascience.com