使用依赖注入时是否会对运行时性能产生影响?
Is there a runtime performance impact when using Dependency Injection?
首先,感谢您看完我的问题。这是我第一次发帖!欢迎提出任何改进我的问题的建议。
最近,我开始编写自己的游戏。我已经创建了一些较小的游戏,但是,我正计划编写一个更大的游戏。我希望能够使用依赖注入。但是,我偶然发现评论表明使用 DI 会对应用程序的运行时产生性能影响。
由于运行时性能在实时应用程序中很重要,我想知道依赖注入的影响有多大?您将如何尽量减少这种影响?
目前,我正计划使用 Spring 框架。这是一个明智的选择吗?或者我应该选择更轻便的东西?
DI 通常用于在应用程序开始时将大部分部件连接在一起,这不是我关心的事情。无论如何,我会去争取。关于 DI 的一些更密集的使用,很难说,但我不会太担心。这一切都经过优化,成本类似于查找和反射。
为了使用 DI,你根本不需要任何框架。 DI 是“注入”依赖项而不是使用全局变量等的想法。有些人更喜欢手动连接他们的应用程序。它并不像听起来那么糟糕,也没有开销。所以你真的应该去 DI。在速度重要的地方结合手动注入的方法是解决性能问题的简单方法,因此您不会后悔使用 DI。
如果你想要的只是 DI,那么我建议使用 Guice。同时 Spring DI 可以在没有长度 XML 的情况下工作,Guice 总是在 Java 中配置,我非常喜欢。它感觉更像是一个库而不是一个框架,因为它易于使用(大多数 类 根本不需要配置,许多其他的只需要一行)。
匕首
Dagger 是一个在编译时工作的 DI 框架:它是一个注解处理器,可以找出所有依赖项并生成将您的应用程序链接在一起的代码,而无需任何反射。
Google 大量使用 DI,其规模上的开销不可忽略。他们已经将一些项目从 Guice 转移到 Dagger 和 IIRC,他们获得了大约 10% 的性能。
首先,感谢您看完我的问题。这是我第一次发帖!欢迎提出任何改进我的问题的建议。
最近,我开始编写自己的游戏。我已经创建了一些较小的游戏,但是,我正计划编写一个更大的游戏。我希望能够使用依赖注入。但是,我偶然发现评论表明使用 DI 会对应用程序的运行时产生性能影响。
由于运行时性能在实时应用程序中很重要,我想知道依赖注入的影响有多大?您将如何尽量减少这种影响?
目前,我正计划使用 Spring 框架。这是一个明智的选择吗?或者我应该选择更轻便的东西?
DI 通常用于在应用程序开始时将大部分部件连接在一起,这不是我关心的事情。无论如何,我会去争取。关于 DI 的一些更密集的使用,很难说,但我不会太担心。这一切都经过优化,成本类似于查找和反射。
为了使用 DI,你根本不需要任何框架。 DI 是“注入”依赖项而不是使用全局变量等的想法。有些人更喜欢手动连接他们的应用程序。它并不像听起来那么糟糕,也没有开销。所以你真的应该去 DI。在速度重要的地方结合手动注入的方法是解决性能问题的简单方法,因此您不会后悔使用 DI。
如果你想要的只是 DI,那么我建议使用 Guice。同时 Spring DI 可以在没有长度 XML 的情况下工作,Guice 总是在 Java 中配置,我非常喜欢。它感觉更像是一个库而不是一个框架,因为它易于使用(大多数 类 根本不需要配置,许多其他的只需要一行)。
匕首
Dagger 是一个在编译时工作的 DI 框架:它是一个注解处理器,可以找出所有依赖项并生成将您的应用程序链接在一起的代码,而无需任何反射。
Google 大量使用 DI,其规模上的开销不可忽略。他们已经将一些项目从 Guice 转移到 Dagger 和 IIRC,他们获得了大约 10% 的性能。