Java Android上的Guice性能

Java Android上的Guice性能,java,android,dependency-injection,guice,Java,Android,Dependency Injection,Guice,作为一名Java开发人员,我已经习惯于在应用程序中使用依赖项注入。不过对于Android,我对性能特别谨慎。在Android应用程序中使用Guice会对性能产生什么影响?我假设有一些开销,但它是否足够重要,我应该避免使用Guice 我使用它可能只是将一些共享对象注入到各种活动中。从版本3开始,Guice缓存反射对象以提高性能。dalvik至少可以加快注释查找速度,但目前的性能是可行的。Roboguice(和Guice)可以显著缩短应用程序启动时间。我的中等大小但尚未完成的应用程序在HTC EVO

作为一名Java开发人员,我已经习惯于在应用程序中使用依赖项注入。不过对于Android,我对性能特别谨慎。在Android应用程序中使用Guice会对性能产生什么影响?我假设有一些开销,但它是否足够重要,我应该避免使用Guice


我使用它可能只是将一些共享对象注入到各种活动中。

从版本3开始,Guice缓存反射对象以提高性能。dalvik至少可以加快注释查找速度,但目前的性能是可行的。

Roboguice(和Guice)可以显著缩短应用程序启动时间。我的中等大小但尚未完成的应用程序在HTC EVO 4g上启动几乎需要15秒


看看作为一个替代方案,它应该几乎不提供启动开销

我会避免像谷歌建议的那样在android中使用DI:


Dagger解决了一些计时问题,但仍然在浪费内存,没有真正的好处。

如果你关心性能,你肯定应该在Android项目中使用Dagger 2


Dagger 2不使用反射扫描应用程序的代码。Dagger的静态编译时实现意味着它可以在Android应用程序中使用,而无需不必要的运行时成本或内存使用。

您可能对Roboguice感兴趣,尤其是Roboguice tracker中的这张票:基本上,我不知道有任何正式的性能分析,但Roboguice(具有Android功能的Guice)正在考虑为此添加一些JUnit测试。我应该提到,如果在本例中使用Guice,我可能会使用roboguice。我不知道他们的Roboguice的junit测试。这将是很好的用来比较东西。我认为Guice可以在Android上以合理的性能使用。例如,我知道Guice的创建者Bob Lee在Android应用程序中使用它。@Colin:Square是一个名为的新DI框架的创建者。