Frage

Was ist Lazy Loading?

Bearbeiten Sie nach dem Lesen einiger Antworten] Warum verwenden die Leute diesen Begriff so oft?

Angenommen, Sie verwenden einfach ein ASP/ADO-Recordset und laden es mit Daten oder eine ADO.NET-Datenquelle für eine Gridview.

Ich hätte wohl fragen sollen, warum die Leute den Begriff Lazy Loading verwenden, welche „anderen“ Typen gibt es?

War es hilfreich?

Lösung

Es wird Lazy Loading genannt, weil Sie wie ein fauler Mensch etwas aufschieben, das Sie nicht tun möchten.Das Gegenteil ist Eager Loading, bei dem Sie etwas sofort laden, lange bevor Sie es brauchen.

Wenn Sie sich fragen, warum Leute Lazy Loading verwenden, denken Sie über eine Anwendung nach, deren Start LOOOOONG dauert.Diese Anwendung führt wahrscheinlich eine Menge eifriges Laden durch ...Dinge von der Festplatte laden, Berechnungen durchführen und so weiter, lange bevor sie überhaupt benötigt werden.

Vergleichen Sie dies mit Lazy Loading: Die Anwendung würde viel schneller starten, aber wenn Sie dann zum ersten Mal etwas tun müssen, das eine lange laufende Last erfordert, kann es zu einer kurzen Pause kommen, während die Anwendung zum ersten Mal geladen wird.Mit Lazy Loading amortisieren Sie also die Ladezeit während der Ausführung Ihrer Anwendung ...und Sie sparen möglicherweise tatsächlich das Laden von Dingen, die der Benutzer möglicherweise nie verwenden möchte.

Andere Tipps

Lazy Loading ist eine Programmierpraxis, bei der Sie ein Objekt nur dann laden oder initialisieren, wenn Sie es zum ersten Mal benötigen.Dies kann möglicherweise zu einer erheblichen Leistungssteigerung führen, insbesondere wenn Ihre Anwendung viele Komponenten enthält.

Wie gewöhnlich, Wikipedia hat mehr Details.

Lazy Loading ist ein Konzept, bei dem wir das Laden der Objekteinheit an dem Punkt verzögern, an dem wir es benötigen.Mit einfachen Worten ausgedrückt: Laden von Objekten auf Abruf statt unnötiges Laden der Objekte.Wenn Sie beispielsweise eine Klasse „Kunde“ haben, in der das Objekt „Bestellungen“ aggregiert ist.Sie möchten also die Kundendaten laden, die Auftragsobjekte möchten Sie jedoch verzögern, bis Ihre Anwendung sie benötigt.

Unten finden Sie ein YouTube-Video, das zeigt, wie Lazy Loading verwendet wird, wie wir Lazy Loading implementieren können und welche Vor- und Nachteile es hat.

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

Die Definition von Wikipedia faulen Laden ist ein Entwurfsmuster, das in der Computerprogrammierung üblicherweise verwendet wird, um die Initialisierung eines Objekts bis zu dem Punkt aufzuschieben, an dem es benötigt wird....

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

Der Begriff Lazy Loading wird üblicherweise verwendet, wenn es um objektrelationale Mapper geht.Wenn Sie ADO.NET direkt verwenden, erhalten Sie immer Eager Loading (dh es wird immer genau das geladen, was Sie angeben).

OR-Mapper wie nHibernate unterstützen die Rückgabe von Proxy-Objekten, die nur dann mit den richtigen Daten „gefüllt“ werden, wenn Sie auf die Daten zugreifen.So laden Sie nur die Daten, die Sie auch wirklich nutzen.Dies ist eine nützliche Funktion, wenn Sie viele Beziehungen zwischen Objekten angeben, die aus der Datenbank geladen werden können, Sie nicht möchten, dass der OR-Mapper alle zugehörigen Objekte und die mit den zugehörigen Objekten verknüpften Objekte usw. lädt.Dies kann dazu führen, dass Ihre gesamte Datenbank geladen wird.

Dieses Problem kann auch durch sorgfältiges Design Ihres Objektmodells verhindert werden.(Die Verwendung von Aggregaten und das Laden nur von Aggregatstämmen wie beim domänengesteuerten Design ist eine Möglichkeit, dies zu umgehen, ohne verzögertes Laden zu verwenden.)

Lazy Loading kann dazu führen, dass der oder Mapper viele kleine Datenbankzugriffe durchführt, anstatt alle benötigten Daten einmal abzurufen.Dies kann auch zu Leistungsproblemen führen.

Hier ist ein Beispiel aus einem echten Python-Code, den ich geschrieben habe:

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

Grundsätzlich habe ich eine Item-Klasse, die einen Artikel in unserem Inventar darstellt.Die Gesamtzahl der Gegenstände, die wir haben, ist die Anzahl, die wir besitzen, plus der Summe aller Gegenstände, die wir aus verschiedenen Quellen leihen.Diese Zahlen sind alle in unserer Datenbank gespeichert, und es wäre sinnlos, diese zu berechnen, bis die Gesamtsumme tatsächlich angefordert wird (da häufig Artikel verwendet werden, ohne dass die Gesamtsumme angefordert wird).

Die Eigenschaft „total“ prüft also, ob das Feld „_total“ vorhanden ist.Ist dies nicht der Fall, fragt der Eigenschaftscode die Datenbank ab und berechnet ihn. Anschließend speichert er den Wert im Feld „_total“, sodass er bei der nächsten Anforderung nicht erneut berechnet werden muss.

Faules Laden:Sie verschwenden Ihre Zeit (oder Ihr Gedächtnis) nicht mit Dingen, die Sie möglicherweise nicht benötigen.Wenn man es dann braucht, dauert es länger, aber das ist in Ordnung.

Beispiel aus dem Leben:Anstatt diesen französischen Sprachführer tatsächlich zu lernen, lernen Sie die Phrasen einzeln, je nach Bedarf.Wann macht das Sinn?Wenn Sie nur für kurze Zeit in Frankreich bleiben (d. h. Sie werden nicht viele der Sätze benötigen) oder wenn Sie sehr bald abreisen müssen.Wenn Sie zwei Jahre dort bleiben und/oder viel Zeit zum Lernen haben, ist es möglicherweise viel effizienter, einfach den gesamten Sprachführer im Voraus zu lernen (eifriges Laden).

[Inspiriert von der Atom, wie es Venus auf WKRP in Bandenbegriffen beigebracht hat.]

Lazy Loading ist ein in Datenbanken häufig verwendeter Begriff, der sich auf das Konzept bezieht, Teile der erforderlichen Informationen nur dann zu laden, wenn sie benötigt werden.

D.h.Angenommen, Sie benötigen einen Datensatz, der mehrere Tabellen verknüpft.Wenn Sie alles auf einmal abrufen würden, würde es länger dauern, als wenn Sie beispielsweise nur die Haupttabelle abrufen würden.Durch Lazy-Loading werden die restlichen Informationen nur dann abgerufen, wenn sie benötigt werden.In bestimmten Szenarien handelt es sich also tatsächlich um ein „effizientes Laden“.

Die anderen Arten des „Ladens“ sind:

  1. Eager Loading – Alle verbundenen Tabellen werden gleichzeitig geladen.

ist ein Designmuster.

Faules Laden:Solange Ihr Code keine Operation durch ein bestimmtes Objekt erfordert, wird das Objekt nicht initialisiert, und sobald es initialisiert ist, wird es nicht erneut initialisiert, sondern verwendet das zuvor initialisierte Objekt.

Dies macht Ihren Code wesentlich effizienter und hilft bei der Verwaltung der Speichernutzung.

Beispielanwendungen für Lazy Loading:

Ghost Lazy Initialisierungswerthalter

Einige der Vorteile des verzögerten Ladens:

  1. Minimiert die Startzeit der Anwendung.
  2. Die Anwendung verbraucht aufgrund des bedarfsgesteuerten Ladens weniger Speicher.
  3. Unnötige Anfragen an den Server werden vermieden.

Ein Beispiel für Lazy Loading wäre ein Raster oder eine Tabelle mit vielen Daten auf einer Webseite, die angezeigt werden sollen, wobei die Anwendung nur die aktuelle Browser-Ansichtspunktgröße des Benutzers lädt.Wenn sie nach unten scrollen, um mehr Inhalte oder Daten anzuzeigen, werden in diesem Moment mehr Daten angezeigt.

Dies wird auch über Ajax oder jQuery immer mehr zu einem gängigen visuellen/Interaktionsdesignmuster.

Und wie oben erwähnt, wäre das Gegenteil das Eager Loading, bei dem Sie den Client nicht berücksichtigen und somit möglicherweise einen Leistungseinbruch erleiden.

Lazy<T> ist jetzt Teil von c# 4.0 - es gibt eine schöne Seite dazu MSDN was das Konzept erklärt.

Laut geeksforgeeks ist Lazy Loading ein Software-Entwurfsmuster, bei dem die Initialisierung eines Objekts nur dann erfolgt, wenn es tatsächlich benötigt wird, und nicht vorher, um die Benutzerfreundlichkeit zu wahren und die Leistung zu verbessern.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top