gpt4 book ai didi

amazon-web-services - 为什么 dagger 在 AWS lambda 实现中被认为比 Guice 更好?

转载 作者:行者123 更新时间:2023-12-03 15:36:08 24 4
gpt4 key购买 nike

我知道 dagger 在编译时通过生成代码来创建注入(inject),因此它的性能优于在运行时执行的 Guice。但特别是对于 lambda 的情况,我看到它在多个地方提到 Dagger 是首选。是因为冷启动问题吗?

由于 lambda 中的冷启动问题,每当长时间后收到请求时,lambda 都会多次进行引导。那么,使用 dagger, Bootstrap 会比 Guice 快得多,因为它已经生成了代码?我是说,与延迟加载相比,Guice 中的所有对象是否也是在引导期间创建的。

最佳答案

如您所知,任何依赖注入(inject)框架在某些时候都需要为您的应用程序所需的对象构建某种依赖关系图。构建此图通常是 DI 框架中计算成本最高的部分。

Guice 通过在运行时使用反射计算出这张图。 Dagger 在编译时生成表示依赖图的代码。我不知道哪个更快,但我确实知道使用反射会带来不小的性能损失。

然而,最大的不同是 Dagger 在编译时完成了所有繁重的工作(这意味着你只做一次工作,不管你运行多少次),而 Guice 必须在每次应用程序启动时做同样的工作。

现在,回答您的问题,如果您的应用程序频繁启动和停止,则首选 Dagger。对于像移动应用程序这样的东西,较慢的启动时间只会降低用户体验。使用 Lambda,它不仅会减慢冷启动时间,而且由于您需要为代码运行的时间量付费,因此不断地重建依赖图实际上会花费您更多的钱。

TLDR; Dagger 在 Lambda 上是首选(对于冷启动时间和成本),因为它将 DI 框架中最昂贵的部分移动到编译时而不是在运行时执行。

关于amazon-web-services - 为什么 dagger 在 AWS lambda 实现中被认为比 Guice 更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55944811/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com