什么是渴望加载?

Qua*_*mis 156 language-agnostic

什么是渴望加载?我用PHP/JS编写代码,但更通用的答案就可以了.

我看到了很多关于Java和Ruby的问题,但我不知道这些语言中的任何一种,我发现很难读取代码.我不知道最初应该做什么

cle*_*tus 365

有三个级别:

  1. 渴望加载:当你被问到时,你会做任何事情.经典的例子是你乘以两个矩阵.你做所有的计算.那是急切的装载;
  2. 延迟加载:您只需在需要时进行计算.在前面的示例中,在访问结果矩阵的元素之前,不进行任何计算.和
  3. 过度加载:这是您尝试预测用户要求和预加载的内容.

我希望在你看到它的背景下有意义.

让我给你一个"Webby"的例子.

想象一下翻页图像的页面,如菜单项或导航.图像加载有三种方式可以在此页面上运行:

  1. 在渲染页面之前加载所需的每个图像(渴望);
  2. 在页面加载时仅加载显示的图像,并在需要时加载其他图像(懒惰); 和
  3. 仅在页面加载时加载显示的图像.在页面加载预压其他图像的背景后,如果你需要他们(过于急切).

合理?

  • 尽管您超越了特定的问题,但还是过分了;这仍然是一个很好的答案。它简短,简单,并举了一个例子。 (2认同)

Bil*_*ard 22

它与延迟加载相反,它延迟了对象的初始化,直到需要对象为止.Eager loading在创建时初始化对象.

  • 我可以补充一点,这些术语通常用于(并且可能来自?)在 ORM(对象关系映射器)的上下文中,您可以将对象映射到关系数据库中的表。 (2认同)

小智 10

如果你想象你有一个名为人的对象,有一个名字,一个出生日期和不太重要的细节的数量,让我们说喜欢的颜色,最喜欢的电视节目.

懒惰加载这个类,你可能会从数据库读取所有核心更频繁使用的细节(比如姓名和出生日期),只读取较少使用的细节时/如果需要它们,渴望加载是相反的,即您同时加载所有细节.

延迟加载的好处通常被称为效率,但是如果对象不那么复杂或效率不是问题,可能会使用急切加载

  • 当你考虑它时,延迟加载更多的是关于每个函数调用的更少内存和更多计算,而在创建类时,急切加载将使用更多内存和更多计算,而在调用函数时则使用更少的计算. (7认同)