我有一个Xamarin Forms应用程序,我最初使用Prism和Unity开发。第一次解析对象时,我发现Unity非常慢,尽管第一次通过相同对象类型的所有后续解析明显更快。Xamarin Forms,Prism Forms和IoC
根据我在another thread上收到的一些无关建议,我决定尝试从Unity交换到DryIoc。不幸的是,我发现解析对象时速度会更慢,但在解析相同对象类型的新实例时速度没有提高。
所以,我的问题是,有什么我可以做任何容器,可以提高性能?例如...
- 有统一内什么,让我预先配置 有可能被创建,使得第一 分辨率是一样快的以后决议的对象?
- 有没有什么我可以用DryIoc做,这将加快所有的对象分辨率?
作为参考,我自己的用法很简单;我为我的大多数对象(设置,数据库等)使用RegisterInstance
,并通过构造函数将它们注入到ViewModel对象中。 Forms和ViewModel对象本身都是使用Prism登录的RegisterTypeForNavigation
扩展方法
@dadhi可能会为您指出一些优化。你也可能想为'UseInstance'换掉'RegisterInstance'。这就是说你确定它是容器,而不是你的应用程序中的其他东西?如果您查看[基准测试](http://www.palmmedia.de/Blog/2011/8/30/ioc-container-benchmark-performance-comparison),DryIoc是可用的更快容器之一。 –
这就是我的想法,为什么我试着交换它。我会看看UseInstance和RegisterInstance之间的区别,看看有没有什么突出。延迟总是在Prism INavigationService.NavigateAsync之内,但因为使用Unity时第二次导航到同一表单时几乎没有延迟,所以我排除了ViewModelLocator服务。 –
'RegisterInstance'已被弃用,以支持DryIoc的'UseInstance'。您是否在使用任何导航界面('IConfirmNavigation','INavigationAware'等)?你在那里有任何代码可能是什么实际上减慢你的速度。 –