Vorrei sapere qual è la differenza effettiva tra caching
e memoization
.
Per come la vedo io, entrambi implicano evitare ripetute chiamate di funzione per ottenere dati archiviandoli .
Qual è la differenza principale tra i due?
Vorrei sapere qual è la differenza effettiva tra caching
e memoization
.
Per come la vedo io, entrambi implicano evitare ripetute chiamate di funzione per ottenere dati archiviandoli .
Qual è la differenza principale tra i due?
Risposte:
La memorizzazione è una forma specifica di memorizzazione nella cache che implica la memorizzazione nella cache del valore restituito di una funzione in base ai suoi parametri .
La memorizzazione nella cache è un termine più generale; ad esempio, la memorizzazione nella cache HTTP è la memorizzazione nella cache ma non la memorizzazione.
Wikipedia dice :
Sebbene correlata alla memorizzazione nella cache, la memorizzazione si riferisce a un caso specifico di questa ottimizzazione, distinguendolo da forme di memorizzazione nella cache come il buffering o la sostituzione della pagina.
If-Match
e scadenze. La memorizzazione ha senso solo per la funzione pura, cosa che raramente è HTTP.
Come li ho visti usati, "memoization" è "mettere in cache il risultato di una funzione deterministica" che può essere riprodotto in qualsiasi momento a parità di funzione e input.
La "memorizzazione nella cache" include fondamentalmente qualsiasi strategia di bufferizzazione dell'output, indipendentemente dal fatto che il valore della sorgente sia riproducibile o meno in un dato momento. In effetti, il caching viene utilizzato anche per fare riferimento a strategie di bufferizzazione dell'input , come la cache di scrittura su un disco o una memoria. Quindi è un termine molto più generale.
Penso che il termine caching venga solitamente utilizzato quando si archiviano i risultati delle operazioni di I / O, o fondamentalmente tutti i dati che arrivano dall'esterno (file, rete, query db). La memorizzazione dei termini di solito si applica alla memorizzazione dei risultati dei propri calcoli, ad esempio nel contesto della programmazione dinamica.
La memorizzazione è una forma speciale di memorizzazione nella cache il risultato di una funzione deterministica. Ciò significa che memorizzare nella cache il risultato al di fuori della funzione non è memoizzazione perché la funzione dovrebbe mutare la cache quando calcola un nuovo risultato (non già nella cache), quindi non sarebbe più una funzione (pura). La memorizzazione generalmente implica il passaggio della cache come argomento aggiuntivo (in una funzione di supporto). La memorizzazione ottimizzerà le funzioni che devono calcolare i valori più volte per un singolo accesso. La memorizzazione nella cache ottimizzerà le funzioni chiamate più volte con gli stessi parametri. In altre parole, Memoization ottimizzerà il primo accesso se la memorizzazione nella cache ottimizzerà solo gli accessi ricorrenti.