¿Qué es eager loading?


¿Qué es eager loading? Codifico en PHP / JS pero una respuesta más generalizada estará bien.

He visto muchas preguntas sobre Java y Ruby, pero no conozco ninguno de estos lenguajes, y me resulta difícil leer el código. No se que se supone que hacer en primer lugar

Author: Quamis, 2009-08-19

3 answers

Hay tres niveles:

  1. Carga ansiosa: haces todo cuando se te pide. El ejemplo clásico es cuando se multiplican dos matrices. Tú haces todos los cálculos. Eso es carga ansiosa;
  2. Carga diferida: solo hace un cálculo cuando es necesario. En el ejemplo anterior, no haces ningún cálculo hasta que accedes a un elemento de la matriz de resultados; y
  3. Carga demasiado ansiosa: aquí es donde intenta anticipar lo que el usuario pedirá y precarga.

Espero que tenga sentido en el contexto que está viendo.

Déjame darte un ejemplo de "Webby".

Imagine una página con imágenes de rollover como para elementos de menú o navegación. Hay tres maneras en que la carga de imágenes podría funcionar en esta página:

  1. Cargue cada imagen requerida antes de renderizar la página ( eager);
  2. Carga solo las imágenes mostradas en la página carga y carga las demás si / cuando se requieren (lazy ); y
  3. Carga solo las imágenes mostradas al cargar la página. Después de que la página haya cargado, precarga las otras imágenes en el fondo en caso de que las necesites ([5]).

¿Tiene sentido?

 312
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-19 12:00:02

Es lo contrario de lazy loading, que aplaza la inicialización de un objeto hasta que el objeto es necesario. Eager loading inicializa un objeto al crearlo.

 21
Author: Bill the Lizard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-19 11:40:40

Si imaginas que tienes un objeto llamado persona que tiene un nombre, una fecha de nacimiento y un número de detalles menos críticos, digamos color favorito, programa de televisión favorito.

Para cargar perezosamente esta clase, la inicializaría leyendo quizás desde una base de datos todos los detalles del núcleo que se usan con más frecuencia (por ejemplo, nombre y fecha de nacimiento) y solo leería los detalles menos utilizados cuando / si son necesarios, eager loading es lo contrario, es decir, carga todos los detalles al mismo tiempo.

El los beneficios de la carga lenta a menudo se citan como eficiencia, sin embargo, si los objetos no son tan complejos o la eficiencia no es una preocupación, se puede usar carga ansiosa

 10
Author: Dave D,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-19 11:43:38