Question

Qu’est-ce que le chargement différé ?

Modifier après avoir lu quelques réponses] Pourquoi les gens utilisent-ils ce terme si souvent?

Supposons que vous utilisiez simplement un jeu d'enregistrements ASP/ADO et que vous le chargeiez avec des données ou une source de données ADO.NET pour une vue en grille.

Je suppose que j'aurais dû demander pourquoi les gens utilisent le terme Lazy Loading, quels sont leurs « autres » types ?

Était-ce utile?

La solution

C'est ce qu'on appelle le chargement paresseux car, comme une personne paresseuse, vous retardez la réalisation de quelque chose que vous ne voulez pas.Le contraire est Eager Loading, où vous chargez quelque chose immédiatement, bien avant d’en avoir besoin.

Si vous êtes curieux de savoir pourquoi les gens pourraient utiliser le chargement paresseux, envisagez une application qui prend LOOOOONG temps à démarrer.Cette application est probablement en train de faire beaucoup de chargements impatients...charger des éléments à partir du disque et effectuer des calculs et ainsi de suite bien avant que cela ne soit nécessaire.

Comparez cela au chargement paresseux, l'application démarrerait beaucoup plus rapidement, mais la première fois que vous devez faire quelque chose qui nécessite une charge longue, il peut y avoir une légère pause pendant son chargement pour la première fois.Ainsi, avec le lazy chargement, vous amortissez le temps de chargement tout au long de l'exécution de votre application...et vous pouvez réellement éviter de charger des éléments que l'utilisateur n'aura peut-être jamais l'intention d'utiliser.

Autres conseils

Le Lazy Loading est une pratique de programmation dans laquelle vous chargez ou initialisez un objet uniquement lorsque vous en avez besoin pour la première fois.Cela peut potentiellement vous donner une amélioration considérable des performances, surtout si votre application contient de nombreux composants.

Comme d'habitude, Wikipédia a plus de détails.

Le chargement paresseux est un concept dans lequel nous retardons le chargement de l'unité objet au point où nous en avons besoin.Mettre des mots simples sur le chargement des objets à la demande plutôt que de charger les objets inutilement.Par exemple, si vous avez une classe « Client » qui a un objet « Commandes » agrégé.Vous aimez donc charger les données client, mais vous souhaitez retarder les objets de commande jusqu'à ce que votre application en ait besoin.

Vous trouverez ci-dessous une vidéo YouTube qui montre comment utiliser le chargement paresseux, comment nous pouvons implémenter le chargement paresseux ainsi que ses avantages et ses inconvénients.

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

La définition de Wikipedia le chargement paresseux est un modèle de conception couramment utilisé dans la programmation informatique pour reporter l'initialisation d'un objet jusqu'au point où il est nécessaire....

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

Le terme chargement paresseux est généralement utilisé pour parler de mappeurs relationnels d'objets.Si vous utilisez ADO.NET directement, vous obtenez toujours un chargement rapide (c'est-à-dire qu'il charge toujours exactement ce que vous spécifiez).

Les mappeurs OR comme nHibernate prennent en charge le renvoi d'objets proxy qui sont "remplis" avec les bonnes données uniquement lorsque vous accédez aux données.De cette façon, vous chargez uniquement les données que vous utilisez réellement.C'est une fonctionnalité utile lorsque vous spécifiez de nombreuses relations entre des objets qui peuvent être chargés à partir de la base de données, vous ne voulez pas que le mappeur OR charge tous les objets associés et les objets liés aux objets associés, etc.Cela peut entraîner le chargement de l’intégralité de votre base de données.

Ce problème peut également être évité par une conception soignée de votre modèle objet.(utiliser des agrégats et charger uniquement les racines d'agrégat comme dans la conception pilotée par domaine est un moyen de contourner ce problème sans utiliser le chargement paresseux).

Un chargement paresseux peut amener le mappeur ou à effectuer de nombreux petits accès à la base de données au lieu de récupérer toutes les données dont vous avez besoin une seule fois.Cela peut également entraîner des problèmes de performances.

Voici un exemple tiré d'un code Python réel que j'ai écrit :

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

Fondamentalement, j'ai une classe Item qui représente un article dans notre inventaire.Le nombre total d'articles que nous possédons correspond au nombre que nous possédons plus la somme de tous les articles que nous empruntons à diverses sources.Ces chiffres sont tous stockés dans notre base de données, et il serait inutile de les calculer tant que le total n'est pas réellement demandé (puisque souvent les articles seront utilisés sans que le total ne soit demandé).

Ainsi, la propriété total vérifie si le champ _total existe.Si ce n'est pas le cas, le code de propriété interroge la base de données et la calcule, puis stocke la valeur dans le champ _total afin qu'elle n'ait pas besoin d'être recalculée la prochaine fois qu'elle est demandée.

Chargement paresseux:vous ne perdez pas votre temps (ni votre mémoire) avec des choses dont vous n'avez peut-être pas besoin.Ensuite, lorsque vous en avez besoin, cela prend plus de temps, mais ce n'est pas grave.

Exemple tiré de la vie :au lieu d'apprendre réellement ce guide de conversation en français, vous apprenez les phrases une par une, selon vos besoins.Quand est-ce que cela a du sens ?Si vous ne restez en France que pour une courte période (c'est-à-dire que vous n'aurez pas besoin de beaucoup de phrases) ou si vous devez partir très bientôt.Si vous êtes là pour deux ans et/ou que vous avez beaucoup de temps pour étudier, il peut alors être beaucoup plus efficace d'apprendre tout le guide de conversation à l'avance (chargement hâtif).

[Inspiré par le Atom tel qu'enseigné en termes de gang par Venus sur WKRP.]

Le chargement paresseux est un terme fréquemment utilisé dans les bases de données pour désigner le concept de chargement de parties des informations requises uniquement lorsque cela est nécessaire.

C'est à dire.supposons que vous ayez besoin d'un enregistrement contenant une jointure de plusieurs tables.Si vous récupériez tout cela en même temps, cela prendrait plus de temps que si vous récupériez uniquement la table principale.En utilisant le chargement différé, le reste des informations ne sera récupéré que si cela est nécessaire.Il s'agit donc en fait d'un « chargement efficace » dans certains scénarios.

Les autres types de « chargement » sont :

  1. Chargement impatient - Chargement de toutes les tables connectées en même temps.

est un modèle de conception.

Chargement paresseux:Jusqu'à ce que votre code nécessite une opération effectuée par un objet particulier, l'objet n'est pas initialisé et une fois initialisé, il ne réinitialise pas l'objet mais utilise l'objet précédemment initialisé.

Cela rend votre code beaucoup plus efficace et facilite la gestion de l'utilisation de la mémoire.

Exemples d'applications du chargement paresseux :

Porte-valeur d'initialisation de Ghost Lazy

Certains des avantages du chargement paresseux :

  1. Minimise le temps de démarrage de l'application.
  2. L'application consomme moins de mémoire en raison du chargement à la demande.
  3. Les requêtes inutiles au serveur sont évitées.

Un exemple de chargement paresseux serait une grille ou un tableau avec beaucoup de données sur une page Web pour voir où l'application charge uniquement la taille du point de vue du navigateur de l'utilisateur à ce moment-là.Lorsqu'ils font défiler vers le bas pour afficher plus de contenu ou de données, davantage de données seront chargées à ce moment-là.

Cela devient de plus en plus un modèle de conception visuelle/d'interaction courant également via ajax ou jQuery.

Et comme mentionné ci-dessus, le contraire serait Eager Loading où vous ne prenez pas en compte le client, ce qui pourrait potentiellement nuire aux performances.

Lazy<T> fait maintenant partie de c# 4.0 - il y a une belle page sur MSDN ce qui explique le concept.

Selon geeksforgeeks, le chargement paresseux est un modèle de conception logicielle dans lequel l'initialisation d'un objet se produit uniquement lorsqu'il est réellement nécessaire et pas avant pour préserver la simplicité d'utilisation et améliorer les performances.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top