Cela s'appelle le chargement paresseux parce que, comme une personne paresseuse, vous retardez de faire quelque chose que vous ne voulez pas faire. Le contraire est Eager Loading, où vous chargez quelque chose tout de suite, bien avant d'en avoir besoin.
Si vous êtes curieux de savoir pourquoi les gens pourraient utiliser le chargement différé, envisagez une application qui prend un LOOOOONG de temps pour démarrer. Cette application est probablement en train d'effectuer beaucoup de chargement impatient ... de charger des choses à partir du disque, de faire des calculs et autres bien avant que cela ne soit jamais 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 chargement paresseux, vous amortissez le temps de chargement tout au long de l'exécution de votre application ... et vous pouvez en fait éviter de charger des choses que l'utilisateur n'a peut-être jamais l'intention d'utiliser.
Le Lazy Loading est une pratique de programmation dans laquelle vous ne chargez ou initialisez un objet que lorsque vous en avez besoin pour la première fois. Cela peut potentiellement vous donner une grande amélioration des performances, surtout si vous avez beaucoup de composants dans votre application.
Comme d'habitude, Wikipedia a plus de détails.
la source
Le chargement paresseux est un concept dans lequel nous retardons le chargement de l'unité objet au point où nous en avons besoin. Mettre en mots simples le chargement d'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 les objets de commandes que vous souhaitez retarder 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 mettre en œuvre le chargement paresseux et ses avantages et inconvénients.
http://www.youtube.com/watch?v=2SrfdAkwmFo
la source
Définition de wikipedia Le chargement paresseux est un modèle de conception couramment utilisé en programmation informatique pour différer l'initialisation d'un objet jusqu'au point où il est nécessaire. ...
http://en.wikipedia.org/wiki/Lazy%20loading
la source
Le terme chargement différé est généralement utilisé pour parler de mappeurs relationnels d'objets. Si vous utilisez ADO.NET directement, vous obtenez toujours un chargement impatient (c'est-à-dire qu'il charge toujours exactement ce que vous spécifiez).
Les mappeurs OR comme nHibernate prennent en charge le retour des objets proxy qui sont "remplis" avec les bonnes données uniquement lorsque vous accédez aux données. De cette façon, vous ne chargez que les données que vous utilisez réellement. C'est une fonctionnalité utile lorsque vous spécifiez un grand nombre de 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 liés et les objets liés aux objets associés, etc. Cela peut entraîner le chargement de toute votre base de données.
Ce problème peut également être évité par une conception soignée de votre modèle d'objet. (l'utilisation d'agrégats et de ne charger que les racines d'agrégats comme dans la conception pilotée par domaine est un moyen de contourner ce problème sans utiliser le chargement paresseux).
Le chargement différé 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 fois. Cela peut également entraîner des problèmes de performances.
la source
Voici un exemple de code Python que j'ai écrit:
En gros, j'ai une classe Item qui représente un article dans notre inventaire. Le nombre total d'articles que nous avons est le 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 calculer cela jusqu'à ce que le total soit réellement demandé (car 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 ne doive pas être recalculée la prochaine fois qu'elle est demandée.
la source
Chargement paresseux: vous ne perdez pas votre temps (ni votre mémoire) avec des choses dont vous pourriez ne pas avoir besoin. Ensuite, lorsque vous en avez besoin, cela prend plus de temps, mais c'est très bien.
Exemple de la vie: au lieu d'apprendre réellement ce guide de conversation en français, vous apprenez les phrases une à la fois, selon vos besoins. Quand cela a-t-il un sens? Si vous ne serez 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, alors il pourrait être beaucoup plus efficace d'apprendre tout le guide de conversation à l'avance (chargement impatient).
[Inspiré par l' Atome tel qu'enseigné en termes de gangs par Venus sur WKRP .]
la source
Le chargement différé 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.
Je suppose que vous devez avoir un enregistrement qui a une jointure de plusieurs tables. Si vous avez tout récupéré en même temps, cela prendrait plus de temps que si vous alliez chercher, disons seulement la table principale. En utilisant le chargement différé, le reste des informations ne sera récupéré que s'il est nécessaire. Il s'agit donc en fait d'un «chargement efficace» dans certains scénarios.
Les autres types de `` chargement '' sont:
la source
est un modèle de conception.
Chargement différé: 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 aide à gérer l'utilisation de la mémoire.
Exemples d'applications de chargement paresseux:
Détenteur de la valeur d'initialisation Ghost Lazy
la source
Certains des avantages du chargement paresseux:
la source
Un exemple de chargement différé serait une grille ou un tableau avec beaucoup de données sur une page Web pour afficher où l'application ne charge que la taille du point de vue du navigateur des utilisateurs à ce moment-là. Lorsqu'ils défilent vers le bas pour afficher plus de contenu ou de données, plus de données sont chargées à ce moment-là.
Cela devient de plus en plus un modèle de conception visuel / d'interaction commun via ajax ou jQuery.
Et comme mentionné ci-dessus, l'opposé serait Eager Loading où vous ne prenez pas en compte le client, ce qui pourrait avoir un impact négatif sur les performances.
la source
Lazy<T>
fait maintenant partie de c # 4.0 - il y a une belle page sur MSDN qui explique le concept.la source
Selon geeksforgeeks, le chargement paresseux est un modèle de conception de logiciel où l'initialisation d'un objet se produit uniquement lorsque cela 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/
la source