Qu'est-ce que le chargement hâtif?


162

Qu'est-ce que le chargement hâtif? Je code en PHP / JS mais une réponse plus générale conviendra parfaitement.

J'ai vu beaucoup de questions concernant Java et Ruby, mais je ne connais aucun de ces langages et j'ai du mal à lire le code. Je ne sais pas ce qui est censé faire en premier lieu


Excellente question.
PA-GW le

Réponses:


384

Il y a trois niveaux:

  1. Chargement avide: vous faites tout quand on vous le demande. Un exemple classique est lorsque vous multipliez deux matrices. Vous faites tous les calculs. C'est un chargement impatient;
  2. Chargement paresseux: vous ne faites un calcul que lorsque cela est nécessaire. Dans l'exemple précédent, vous n'effectuez aucun calcul avant d'accéder à un élément de la matrice de résultats; et
  3. Chargement excessif: c'est ici que vous essayez d'anticiper ce que l'utilisateur demandera et de le précharger.

J'espère que cela a du sens dans le contexte dans lequel vous le voyez.

Laissez-moi vous donner un exemple «Webby».

Imaginez une page avec des images de survol comme pour les éléments de menu ou la navigation. Le chargement d'image peut fonctionner de trois manières sur cette page:

  1. Chargez chaque image requise avant de rendre la page ( impatiente );
  2. Chargez uniquement les images affichées lors du chargement de la page et chargez les autres si / quand elles sont nécessaires ( paresseux ); et
  3. Chargez uniquement les images affichées lors du chargement de la page. Une fois la page chargée, préchargez les autres images en arrière-plan au cas où vous en auriez besoin ( trop impatient ).

Ça a du sens?


3
Bien que vous soyez allé trop loin en allant au-delà de la question spécifique; c'est toujours une excellente réponse. Il est court, simple et donne un exemple.
Phil

23

C'est l'opposé du chargement différé , qui diffère l'initialisation d'un objet jusqu'à ce que l'objet soit nécessaire. Le chargement hâtif initialise un objet lors de sa création.


1
Je pourrais ajouter que ces termes sont généralement utilisés (et proviennent peut-être?) Dans le contexte d'un ORM (Object Relational Mapper), où vous mappez un objet à une table dans une base de données relationnelle.
Loki

10

Si vous imaginez que vous avez un objet appelé personne qui a un nom, une date de naissance et un certain nombre de détails moins critiques, disons la couleur préférée, le programme de télévision préféré.

Pour charger paresseusement cette classe, vous l'initieriez en lisant peut-être à partir d'une base de données tous les détails de base les plus fréquemment utilisés (par exemple, le nom et la date de naissance) et ne liriez que les détails les moins utilisés quand / s'ils sont nécessaires, le chargement impatient est le contraire , c'est-à-dire que vous chargez tous les détails en même temps.

Les avantages du chargement paresseux sont souvent cités comme étant efficaces, mais si les objets ne sont pas si complexes ou si l'efficacité n'est pas un problème, le chargement impatient peut être utilisé


7
Quand vous y réfléchissez, le chargement différé concerne davantage moins de mémoire et plus de calculs à chaque appel de fonction, tandis qu'un chargement hâtif utiliserait plus de mémoire et plus de calculs lorsque la classe est créée et moins de calculs lorsque la fonction est appelée.
Loki

0

Chargement Désireuse est également utilisé dans Angulaire 8. Il signifie simplement que l'instant l'application est chargée dans le navigateur nous automatiquement, obtenez instantanément tout le code dans un module particulier, par exemple, disons que vous venez de créer un module Auth avec un Signin et Inscription composant qui est importé dans un module d'application .

En revanche, il y a chargement paresseux , c'est-à-dire lorsque nous disons au module d'application dans lequel le module d'authentification est chargé, de ne charger le module d'authentification qu'à un certain moment, par exemple lorsqu'un utilisateur se dirige vers une certaine route.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.