2009-08-19 84 views
128

什么是渴望加载?我使用PHP/JS进行编码,但更广义的答案将会很好。什么是渴望加载?

我看到很多关于Ruby的问题,但我不知道这些语言中的任何一种,而且我发现很难阅读代码。我不知道什么应该首先做

回答

296

有三个层次:

  1. 预先加载:当问及你所做的一切。经典的例子是当你乘两个矩阵。你做所有的计算。这是急切的加载;
  2. 延迟加载:您只需要时进行计算。在前面的例子中,除非访问结果矩阵的一个元素,否则不做任何计算;和
  3. 过分渴望加载:这是您尝试和预测用户将要求和预加载它的地方。

我希望在你看到的上下文中有意义。

让我给你一个“Webby”的例子。

想象一个包含翻转图像的菜单项或导航页面。有三种方式将图像加载可在此页上运行:

  1. 加载您呈现页面(渴望)之前,需要每一个图像;
  2. 在页面加载时仅加载显示的图像并在需要时加载其他图像(lazy);和
  3. 仅加载页面加载时显示的图像。在页面加载之后,在背景中预加载其他图像以防您需要它们over-eager)。

有意义吗?

+0

虽然你摔过通过超越的具体问题;这仍然是一个很好的答案。它简短并且举例。 – Phil 2011-03-05 17:22:26

+3

谢谢..很好的回答:) – Orlando 2012-05-08 14:27:01

21

这与lazy loading相反,它推迟对象的初始化,直到需要该对象。急切加载在创建时初始化对象。

+1

我可以补充说,这些术语通常用在ORM(对象关系映射器)的上下文中,在这里你将对象映射到关系数据库中的表格。 – Loki 2009-08-19 11:44:57

9

如果你想象你有一个叫人的对象,他有一个名字,一个出生日期和一些不太关键的细节,可以说最喜欢的颜色,最喜欢的电视节目。

为了延迟加载这个类,你可能会从数据库读取所有核心更频繁使用的细节(比如说出生的名字和出生日期),并且只有在需要/需要的时候才会读取较少使用的细节,渴望加载是相反的,即你在同一时间加载所有细节。

懒加载的典型应用该类超支往往citied为effiecency,但如果对象是不是复杂或efficency不关心预先加载可用于

+7

当你考虑它时,延迟加载更多的是关于每个函数调用时更少的内存和更多的计算,而当创建类时急切的加载会使用更多的内存和更多的计算,而调用函数时会减少计算量。 – Loki 2009-08-19 11:49:25