2016-05-23 24 views
1

我們在我們的網點網絡應用程序中使用AutoMapper 3.1.1.0。 我們有許多需要映射的類。 初始化映射所需的時間差不多是22秒。 我們幾乎有1327 DTO需要映射。AutoMapper傷害表現在.NET應用程序中有超過1327 DTO同時映射

而且我們可以說每個DTO有8個屬性。

我擔心的是我們在列表檢查每個消息的映射1327 DTO,
然後用

if (MappingManager.MessageMappings.ContainsKey(message.GetType())) 
      { 
       var myMessage = Mapper.Map(message, message.GetType(), MappingManagerFile.MessageMappings[message.GetType()]); 

所以這會降低性能。 我們需要在使用後處理,還是自動貼圖自己保管? 在任務管理器中,執行此轉換的組件佔用大量內存。

因此,請提出我們需要使用什麼替代方法來提高性能。

+0

*爲什麼舊版本與*什麼是22秒啓動(!)時間的問題時,該程序啓動時發生一次,可以異步一邊做其他事情的啓動做什麼? – TomTom

+0

*「初始化映射所需的時間差不多是22秒」*,您能顯示代碼嗎,您能確定哪種類型需要更長時間等嗎? – Sinatr

+0

@Sinatr我擔心的是沒有所需的啓動時間,但實際要求來後,我們需要映射,使用Mapper.Map和那些1300個列表記錄 –

回答

0

更新版本的AutoMapper懶散地編譯配置。還有一些啓動時間,發現和映射類型,但是編譯運行時映射函數是懶惰地完成的。

我會建議嘗試5.0發佈和比較數字。

+0

謝謝..我會盡力讓你知道:) –

0

有很多與automapper映射的實體需要一些時間。您是否急於加載實體或使用延遲加載?在使用延遲加載時,我看到過這些問題,因爲Automapper在獲取所有關係數據時會生成大量數據庫匹配。

預先加載可能是你最好的選擇在這裏,否則我建議你需要的東西只有加載。看起來好像很多數據一次加載。

+0

@bhmhler謝謝你解釋搜索,但你可以告訴我,AutoMapper拿處理這些對象的注意事項,還是我們需要寫作。加載時間不受關注。值得關注的是,當請求到達時,我們需要攔截並檢查存在,然後Map –

+0

Automapper將生成映射對象,並且如果DTO中有大量數據,您將獲得大量內存使用量。完成後,您應該處置消息模型和自動映射模型。我不認爲這與Automapper本身有關,而是您創建的對象需要處理。 – bhmahler

+0

是的,我會試着這樣:)謝謝澄清 –