Domanda

Cos'è il caricamento lento?

Modifica dopo aver letto alcune risposte] Perché le persone usano questo termine così spesso?

Supponiamo che tu usi semplicemente un recordset ASP/ADO e lo carichi con dati o origine dati ADO.NET per una visualizzazione a griglia.

Immagino che avrei dovuto chiedere perché le persone usano il termine Lazy Loading, quali "altri" tipi sono i loro?

È stato utile?

Soluzione

Si chiama caricamento lento perché, come una persona pigra, rimandi a fare qualcosa che non vuoi.L'opposto è Eager Loading, dove carichi qualcosa subito, molto prima che ne abbia bisogno.

Se sei curioso di sapere perché le persone potrebbero utilizzare il caricamento lento, considera un'applicazione che impiega LOOOOONG tempo per avviarsi.Probabilmente questa applicazione sta eseguendo moltissimi caricamenti...caricare cose dal disco, eseguire calcoli e quant'altro non molto tempo prima che sia mai necessario.

Confrontalo con il caricamento lento, l'applicazione si avvierebbe molto più velocemente, ma la prima volta che devi fare qualcosa che richiede un carico di esecuzione prolungato, potrebbe verificarsi una leggera pausa mentre viene caricata per la prima volta.Pertanto, con il caricamento lento, stai ammortizzando il tempo di caricamento durante l'esecuzione dell'applicazione...e potresti effettivamente risparmiare dal caricamento di cose che l'utente potrebbe non avere mai intenzione di utilizzare.

Altri suggerimenti

Il Lazy Loading è una pratica di programmazione in cui carichi o inizializzi un oggetto solo quando ne hai bisogno.Questo può potenzialmente darti un grande incremento delle prestazioni, soprattutto se hai molti componenti nella tua applicazione.

Come di solito, Wikipedia ha più dettagli.

Il caricamento lento è un concetto in cui ritardiamo il caricamento dell'unità oggetto nel punto in cui ne abbiamo bisogno.In parole povere, caricamento di oggetti su richiesta anziché caricare oggetti inutilmente.Ad esempio, se hai una classe "Cliente" che ha l'oggetto "Ordini" aggregato.Quindi desideri caricare i dati del cliente ma gli oggetti dell'ordine che desideri ritardare finché la tua applicazione non ne avrà bisogno.

Di seguito è riportato un video di YouTube che dimostra come utilizzare il caricamento lento, come possiamo implementare il caricamento lento e i vantaggi e gli svantaggi dello stesso.

http://www.youtube.com/watch?v=2SrfdAkwmFo

Definizione di Wikipedia Il caricamento pigro è un modello di progettazione comunemente usato nella programmazione del computer per differire l'inizializzazione di un oggetto fino al punto in cui è necessario....

http://en.wikipedia.org/wiki/Lazy%20loading

Il termine caricamento lento viene solitamente utilizzato quando si parla di mappatori relazionali di oggetti.Se usi ADO.NET direttamente otterrai sempre un caricamento impaziente (cioè carica sempre solo ciò che specifichi).

I mappatori OR come nHibernate supportano la restituzione di oggetti proxy che vengono "riempiti" con i dati giusti solo quando si accede ai dati.In questo modo carichi solo i dati che usi realmente.Questa è una funzionalità utile quando si specificano molte relazioni tra oggetti che possono essere caricati dal database, non si desidera che l'OR-mapper carichi tutti gli oggetti correlati e gli oggetti correlati agli oggetti correlati e così via.Ciò può comportare il caricamento dell'intero database.

Questo problema può essere prevenuto anche mediante un'attenta progettazione del modello a oggetti.(l'uso degli aggregati e il caricamento solo delle radici aggregate come nella progettazione basata sul dominio è un modo per aggirare questo problema senza utilizzare il caricamento lento).

Il caricamento lento può far sì che o il mapper esegua molti piccoli accessi al database invece di recuperare tutti i dati necessari una volta.Ciò può causare anche problemi di prestazioni.

Ecco un esempio tratto da un codice Python reale che ho scritto:

class Item(Model):
    ...
    @property
    def total(self):
        if not hasattr(self, "_total"):
            self._total = self.quantity \
                  + sum(bi.quantity for bi in self.borroweditem_set.all())
        return self._total

Fondamentalmente, ho una classe Articolo che rappresenta un articolo nel nostro inventario.Il numero totale di articoli che abbiamo è il numero che possediamo più la somma di tutti gli articoli che prendiamo in prestito da varie fonti.Questi numeri sono tutti memorizzati nel nostro database e sarebbe inutile calcolarli finché non viene effettivamente richiesto il totale (poiché spesso gli articoli verranno utilizzati senza che venga richiesto il totale).

Quindi la proprietà total controlla se esiste il campo _total.In caso contrario, il codice della proprietà interroga il database e lo calcola, quindi memorizza il valore nel campo _total in modo che non sia necessario ricalcolarlo alla successiva richiesta.

Caricamento lento:non sprechi il tuo tempo (né la tua memoria) con cose di cui potresti non aver bisogno.Poi quando ne hai bisogno, ci vuole più tempo, ma va bene.

Esempio dalla vita:invece di imparare effettivamente quel frasario francese, impari le frasi una alla volta, quando necessario.Quando ha senso questo?Se rimarrai in Francia solo per un breve periodo (cioè non ti serviranno molte frasi) o se devi partire molto presto.Se rimani lì per due anni e/o hai molto tempo per studiare, allora potrebbe essere molto più efficiente imparare semplicemente l'intero frasario in anticipo (caricamento impaziente).

[Ispirato da Atom come insegnato in termini di gruppo da Venus su WKRP.]

Il caricamento lento è un termine utilizzato frequentemente nei database per fare riferimento al concetto di caricamento di parti delle informazioni richieste solo quando necessario.

Cioè.supponiamo che tu abbia bisogno di un record che contenga più tabelle.Se lo recuperassi tutto in una volta, ci vorrebbe più tempo che se recuperassi solo la tabella principale.Utilizzando il caricamento lento, il resto delle informazioni verrà recuperato solo se necessario.Quindi in alcuni scenari è in realtà un "caricamento efficiente".

Gli altri tipi di "caricamento" sono:

  1. Caricamento impaziente: caricamento di tutte le tabelle collegate contemporaneamente.

è un modello di progettazione.

Caricamento lento:Fino a quando il codice non richiede alcune operazioni eseguite da un particolare oggetto, l'oggetto non viene inizializzato e, una volta inizializzato, non reinizializza l'oggetto ma utilizza l'oggetto precedentemente inizializzato.

Ciò rende il tuo codice molto più efficiente e aiuta a gestire l'utilizzo della memoria.

Esempi di applicazioni di caricamento lento:

Titolare del valore di inizializzazione pigro fantasma

Alcuni dei vantaggi del caricamento lento:

  1. Riduce al minimo il tempo di avvio dell'applicazione.
  2. L'applicazione consuma meno memoria a causa del caricamento su richiesta.
  3. Si evitano richieste non necessarie al server.

Un esempio di caricamento lento potrebbe essere una griglia o una tabella con molti dati su una pagina Web per visualizzare dove l'applicazione carica solo la dimensione del punto di vista del browser dell'utente in quel momento.Quando scorrono verso il basso per visualizzare più contenuti o dati, in quel momento verranno caricati più dati visualizzati.

Questo sta diventando sempre più un modello di progettazione visiva/interazionale comune anche tramite ajax o jQuery.

E come accennato in precedenza, l'opposto sarebbe il caricamento desideroso in cui non si prende in considerazione il cliente, con conseguente potenziale calo delle prestazioni.

Lazy<T> fa ora parte di C# 4.0: c'è una bella pagina su MSDN che spiega il concetto.

Secondo geeksforgeeks, il Lazyloading è un software design pattern in cui l'inizializzazione di un oggetto avviene solo quando è effettivamente necessario e non prima per preservare la semplicità di utilizzo e migliorare le prestazioni.

https://www.geeksforgeeks.org/lazy-loading-design-pattern/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top