2009-08-19 17 views
128

¿Qué está ansioso por cargar? Codigo en PHP/JS pero una respuesta más general estará bien.¿Qué está ansioso por cargar?

Vi un montón de preguntas con respecto a Java & Ruby, pero no conozco ninguno de estos idiomas, y me resulta difícil leer el código. No sé cuál supone que debe hacer en primer lugar

Respuesta

296

hay tres niveles:

  1. carga Eager: haces todo cuando se le preguntó. El ejemplo clásico es cuando multiplicas dos matrices. Usted hace todos los cálculos. Eso es carga ansiosa;
  2. La carga diferida: sólo hacer un cálculo cuando sea necesario. En el ejemplo anterior, no hace ningún cálculo hasta que accede a un elemento de la matriz de resultados; y
  3. demasiado entusiasta de carga: esto es en el que tratar y anticipar lo que el usuario va a pedir y precargar ella.

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

Déjeme darle un ejemplo de "Webby".

Imagine una página con imágenes de desplazamiento como elementos de menú o navegación. Hay tres formas de la carga de imágenes podría trabajar en esta página:

  1. carga cada imagen individual requerido antes de dibujar la página (ansiosos);
  2. de carga sólo las imágenes que se muestran en la carga de la página y cargar los otros si/cuando se le pide (perezoso); y
  3. Cargue solo las imágenes mostradas en la carga de la página. Después de que la página cargó precargar las otras imágenes en el fondo en caso de que las necesite (over-eager).

sentido?

+0

A pesar de que fue por la borda por ir más allá de la cuestión específica; esta sigue siendo una respuesta excelente. Es corto, simple y da un ejemplo. – Phil

+3

gracias ..gran respuesta :) – Orlando

21

Es lo opuesto de lazy loading, que difiere de inicialización de un objeto hasta que se necesita el objeto. La carga ansiosa inicializa un objeto en la creación.

+1

Podría agregar que estos términos generalmente se usan (¿y tal vez provienen de?) en el contexto de un ORM (Object Relational Mapper), donde se asigna un objeto a una tabla en una base de datos relacional. – Loki

9

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

Para cargar esta clase la inutilizaría leyendo quizás en una base de datos todos los detalles centrales más usados ​​(decir nombre y fecha de nacimiento) y solo lea en los detalles menos usados ​​cuando/si se necesitan, ansiosos cargar es lo opuesto, es decir, carga todos los detalles al mismo tiempo.

Los benifits de carga diferida a menudo como -CITIED effiecency, sin embargo, si los objetos no son tan complejos o eficiencia no es una preocupación de carga ansiosa puede ser utilizado

+7

Cuando lo piense bien, la carga diferida es más sobre menos memoria y más cálculos en cada llamada de función, mientras que la carga ansiosa usaría más memoria y más cálculos cuando se crea la clase y menos cálculos cuando se llama a la función. – Loki

Cuestiones relacionadas