測試ADO.NET團隊進行學習了解
ADO.NET團隊最近討論了ADO.NET Entity框架的各種性能特征。ADO.NET Entity框架在12月已經進入它的第三個beta版本,自那時起開發團隊就開始為開發人員提供了使用該框架的相關信息。
本文鞭辟入里地介紹了ADO.NET Entity框架的性能,演示了如何提高簡單查詢速度的方法,并闡釋了框架的性能特征。需要重點指出的是,當一個抽象層或者類似EDM(譯注:指Entity Data Model)的模塊被用來轉換數據庫的關系樣式時,ADO.NET團隊帶來一定的性能損失。
查詢與結果
本文使用了NorthWind數據庫作為模型,并創建了一個簡單查詢:
- (NorthwindEntities ne = NorthwindEntities())
- {
- (Order o ne.Orders)
- {
- i = o.OrderID;
- }
- }
測試時,我們的每個查詢對整個848行數據進行了10次遍歷。結果很有意思,第1次運行時耗費了4241毫秒,而接下來的每次運行則平均耗費13毫秒左右的時間。最耗時的一部分內容是ObjectContext的創建,ADO.NET團隊而在執行任意一個訪問數據庫的操作時,都會有一些耗時的操作發生。#t#
耗時百分比值***的是視圖生成,它達到了驚人的56%。既然視圖生成是造成性能損耗的罪魁禍首,那么開發人員***是使用命令行工具EDM生成器(EdmGen.exe),運行時需要加上視圖生成命令參數(/mode:ViewGeneration),ADO.NET團隊的輸出內容為一個代碼文件(C#或者VB.NET),可以包含在項目中。視圖的預生成可以將啟動時間降低到2933毫秒,而對于循環遍歷操作,整個時間可以降低28%。生成視圖并隨著應用程序一起發布是提高性能的妙方,但其缺點則在于視圖不再是動態的,一旦模型發生改變,就需要重新生成以保持同步。