2009-08-19 5 views
128

Che cosa è il caricamento bisognoso? Codice in PHP/JS ma una risposta più generalizzata andrà bene.Che cosa è il caricamento bisognoso?

Ho visto un sacco di domande su Java & Ruby, ma non conosco nessuno di questi linguaggi e trovo difficile leggere il codice. Non so che cosa dovrebbe fare in primo luogo

risposta

296

ci sono tre livelli:

  1. Eager carico: si fa tutto quando gli viene chiesto. L'esempio classico è quando moltiplichi due matrici. Fai tutti i calcoli. Questo è carico impaziente;
  2. Caricamento lento: si esegue un calcolo solo quando richiesto. Nell'esempio precedente, non si effettuano calcoli finché non si accede a un elemento della matrice dei risultati; e
  3. Caricamento eccessivo: Qui è dove si prova e si anticipa ciò che l'utente chiederà e lo precaricherà.

Spero che abbia senso nel contesto in cui lo stai vedendo.

Lasciatemi fare un esempio "Webby".

Immagina una pagina con immagini rollover come per le voci di menu o la navigazione. Ci sono tre modi in cui il caricamento delle immagini potrebbe lavorare in questa pagina:

  1. carico ogni singola immagine richiesto prima che il rendering della pagina (desiderosi);
  2. Carica solo le immagini visualizzate a caricamento della pagina e carica le altre se/quando sono necessarie (pigro); e
  3. Carica solo le immagini visualizzate al caricamento della pagina. Dopo che la pagina ha caricato il preload le altre immagini in background nel caso in cui ne hai bisogno (over-eager).

Ha senso?

+0

Anche se si è andato a mare andando oltre la questione specifica; questa è ancora una risposta eccellente. È breve, semplice e dà un esempio. – Phil

+3

grazie ..ottima risposta :) – Orlando

21

È l'opposto di lazy loading, che rimuove l'inizializzazione di un oggetto finché l'oggetto non è necessario. Il caricamento di Eager inizializza un oggetto al momento della creazione.

+1

Potrei aggiungere che questi termini sono generalmente utilizzati (e forse provengono da?) nel contesto di un ORM (Object Relational Mapper), dove si mappa un oggetto in una tabella in un database relazionale. – Loki

9

Se immagini di avere un oggetto chiamato persona che ha un nome, una data di nascita e un numero di dettagli meno critici, diciamo il colore preferito, il programma TV preferito.

Per il carico pigro di questa classe, si dovrebbe leggere in forse da un database tutti i dettagli più frequentemente utilizzati (ad esempio nome e data di nascita) e leggere solo i dettagli meno utilizzati quando/se sono necessari, desiderosi il caricamento è il contrario, ovvero carichi in tutti i dettagli contemporaneamente.

I Benefici di caricamento pigro sono spesso citied come effiecency, se gli oggetti non sono così complesse o efficienza non è una preoccupazione eager loading può essere utilizzato

+7

Quando ci si pensa, il caricamento lento è più una quantità minore di memoria e più calcoli a ogni chiamata di funzione, mentre il caricamento ansioso richiede più memoria e più calcoli quando la classe viene creata e meno calcoli quando viene chiamata la funzione. – Loki

Problemi correlati