views:

522

answers:

3

What is eager loading? I code in PHP/JS but a more generalised answer will be just fine.

I saw a lot of questions regarding Java & Ruby, but i don't know any of these languages, and I find it hard to read code. I don't know whats supposed to do in the first place

+12  A: 

There are three levels:

  1. Eager loading: you do everything when asked. Classic example is when you multiply two matrices. You do all the calculations. That's eager loading;
  2. Lazy loading: you only do a calculation when required. In the previous example, you don't do any calculations until you access an element of the result matrix; and
  3. Over-eager loading: this is where you try and anticipate what the user will ask for and preload it.

I hope that makes sense in the context you're seeing it.

Let me give you a "Webby" example.

Imagine a page with rollover images like for menu items or navigation. There are three ways the image loading could work on this page:

  1. Load every single image required before you render the page (eager);
  2. Load only the displayed images on page load and load the others if/when they are required (lazy); and
  3. Load only the displayed images on page load. After the page has loaded preload the other images in the background in case you need them (over-eager).

Make sense?

cletus
+2  A: 

It's the opposite of lazy loading, which defers initialization of an object until the object is needed. Eager loading initializes an object upon creation.

Bill the Lizard
I could add that these terms are generally used (and maybe come from?) in the context of a ORM (Object Relational Mapper), where you map an object to a table in a relational database.
Loki
+2  A: 

If you imagine you have object called person who has a name, a date of birth and number of less critical details, lets say favourite colour, favourite tv program.

To lazy load this class you would initalise it reading in perhaps from a database all the core more frequently used details (say name and date of birth) and only read in the less used details when / if they are needed, eager loading is the opposite, i.e. you load in all the details at the same time.

The benifits of lazy loading are often citied as effiecency, however if objects aren't that complex or efficency isn't a concern eager loading may be used

Dave D
When you think about it, lazy loading is more about less memory and more computations at each function call, while eager loading would use more memory and more computations when the class is created and less computations when the function is called.
Loki