我有一个使用Prism和Unity开发的Xamarin Forms应用程序。但是,我发现Unity在首次解析对象时相当缓慢,一旦第一次过去,所有后续相同对象类型的解析都会更快。
基于我在另一个线程上收到的一些无关建议,我决定尝试从Unity切换到DryIoc。不幸的是,我发现即使在解析新实例的那些相同对象类型时,它也比解析对象时更慢。
因此,我的问题是,有没有任何我可以使用这两个容器来提高性能的方法?例如...
- 在Unity中是否有任何方法可以预先配置可能创建的对象,以便第一次解析与后续解析一样快? - 我是否可以在DryIoc中做些什么来加速所有对象的解析?
供参考,我自己对每个容器的使用非常简单;我对大多数对象(设置、数据库等)使用RegisterInstance,并通过构造函数将它们注入到我的ViewModel对象中。Forms和ViewModel对象本身都使用Prism的RegisterTypeForNavigation扩展方法进行注册。
基于我在另一个线程上收到的一些无关建议,我决定尝试从Unity切换到DryIoc。不幸的是,我发现即使在解析新实例的那些相同对象类型时,它也比解析对象时更慢。
因此,我的问题是,有没有任何我可以使用这两个容器来提高性能的方法?例如...
- 在Unity中是否有任何方法可以预先配置可能创建的对象,以便第一次解析与后续解析一样快? - 我是否可以在DryIoc中做些什么来加速所有对象的解析?
供参考,我自己对每个容器的使用非常简单;我对大多数对象(设置、数据库等)使用RegisterInstance,并通过构造函数将它们注入到我的ViewModel对象中。Forms和ViewModel对象本身都使用Prism的RegisterTypeForNavigation扩展方法进行注册。
RegisterInstance
替换为UseInstance
。话虽如此,您确定是容器而不是应用程序中的其他问题吗?如果您查看基准测试,DryIoc是可用的较快容器之一。 - Dan SiegelRegisterInstance
已被弃用,DryIoc现在推荐使用UseInstance
。您是否正在使用任何导航接口(IConfirmNavigation
、INavigationAware
等)?您在其中编写的任何代码可能是实际减慢速度的原因。 - Dan Siegel