ChatGPT解决这个技术问题 Extra ChatGPT

What is eager loading?

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

Great question.

c
cletus

There are three levels:

Eager loading: you do everything when asked. Classic example is when you multiply two matrices. You do all the calculations. That's eager loading; 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 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:

Load every single image required before you render the page (eager); Load only the displayed images on page load and load the others if/when they are required (lazy); and 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?


Although you went overboard by going beyond the specific question; this is still an excellent answer. It is short, simple and gives an example.
Lazy - unwilling to work or use energy. Eager - strongly wanting to do or have something. Makes sense!
@Phil Now that's the perfect example of over-eager loading.
B
Bill the Lizard

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.


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.
D
Dave D

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


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.
D
Daniel

Eager loading is also used in Angular 8. It just means that the instant the application is loaded inside the browser we automatically, instantly get all the code inside a particular module, for example, say you just created an Auth Module with a Signin and Signup component to it that gets imported into an App Module.

In contrast, there is lazy loading, which is when we tell the App Module which has the Auth Module loaded into it, to only load the Auth Module at a certain point in time such as when a user goes to a certain route.