我有一個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'等)?你在那裏有任何代碼可能是什麼實際上減慢你的速度。 –