使用依赖注入时是否会影响运行时性能?

时间:2017-01-13 02:50:27

标签: java performance dependency-injection game-engine

首先,感谢您查看我的问题。这是我第一次发帖!欢迎任何有关改进我的问题的建议。

最近,我开始编写自己的游戏。我创造了一些较小的游戏,但是,我打算写一个更大的游戏。我希望能够使用依赖注入。但是,我偶然发现评论表明在使用DI时对应用程序运行时的性能影响。

由于运行时性能在实时应用程序中非常重要,我想知道依赖注入有多大影响?以及如何减少这种影响?

目前,我正计划使用Spring Framework。这是明智的选择吗?或者我应该选择更轻量级的东西?

1 个答案:

答案 0 :(得分:1)

DI通常用于在应用程序开始时将大部件连接在一起,这不是我关心的事情。无论如何,我会去做。关于DI的一些更密集的用途,很难说,但我不会太担心。它全部经过优化,成本就像是查找和反思。

为了使用DI,您根本不需要框架。 DI是“注入”依赖关系而不是使用全局或类似的想法。有些人喜欢手动连接他们的应用程序。它没有听起来那么糟糕,也没有开销。所以你真的应该选择DI。在速度很重要的情况下手动注入的组合方法是解决性能问题的一种简单方法,因此您不会后悔使用DI。

如果您想要的是DI,那么我建议使用Guice。虽然在此期间Spring DI可以在没有长度XML的情况下工作,但Guice总是用Java配置,我非常喜欢。它感觉更像是一个库而不是一个框架,因为它易于使用(大多数类根本不需要配置,许多其他类只需要一行)。

匕首

Dagger是一个在编译时工作的DI框架:它是一个注释处理器,可以找出所有依赖关系,并生成将您的应用程序与任何反射链接在一起的代码。

Google大量使用DI,其规模的开销不可忽视。他们已经将一些项目从Guice转移到了Dagger和IIRC,他们已经获得了10%的表现。