ChatGPT解决这个技术问题 Extra ChatGPT

什么是急切加载?

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

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

好问题。

c
cletus

共有三个级别:

急切的加载:当被要求时,您会做所有事情。经典示例是当您将两个矩阵相乘时。你做所有的计算。那是急切的加载;延迟加载:您只在需要时进行计算。在前面的示例中,在访问结果矩阵的元素之前不会进行任何计算;过度急切的加载:这是您尝试并预测用户会要求什么并预加载它的地方。

我希望这在您所看到的上下文中是有意义的。

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

想象一个带有滚动图像的页面,例如菜单项或导航。在此页面上可以通过三种方式加载图像:

在渲染页面之前加载所需的每一个图像(渴望);仅在页面加载时加载显示的图像,并在需要时加载其他图像(惰性);并在页面加载时仅加载显示的图像。页面加载后,在后台预加载其他图像以备不时之需(过度渴望)。

说得通?


尽管您超出了具体问题,但过分了;这仍然是一个很好的答案。它简短、简单并举了一个例子。
懒惰——不愿工作或消耗能量。渴望 - 强烈想要做某事或拥有某事。说得通!
@Phil现在这是过度加载的完美示例。
B
Bill the Lizard

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


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

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

要延迟加载此类,您可能会初始化它从数据库中读取所有更常用的核心详细信息(例如姓名和出生日期),并且仅在需要时/如果需要时才读取较少使用的详细信息,急切加载是相反的,即您同时加载所有细节。

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


仔细想想,延迟加载更多的是在每次函数调用时使用更少的内存和更多的计算,而急切加载会在创建类时使用更多的内存和更多的计算,而在调用函数时使用更少的计算。
D
Daniel

Angular 8 中也使用了急切加载。这只是意味着应用程序在浏览器中加载的那一刻,我们会自动立即获取特定模块中的所有代码,例如,假设您刚刚创建了一个带有登录和注册的 Auth 模块它的组件被导入到应用程序模块中。

相比之下,有延迟加载,即我们告诉应用模块加载了 Auth 模块,只在某个时间点加载 Auth 模块,例如当用户转到某个路线时。