不知道從哪裏可以得知這個信息,因爲他們拿下他們的論壇的亞音速乘員組,並說使用stackoverflow,所以我們走了。SubSonic&LinqTemplate:爲什麼在這裏讀得這麼慢?
我一直在努力實現ORM的最大性能。我喜歡亞音速,在這種情況下,它的批量插入,更新和刪除消除了實體框架,但是對於直接簡單的讀取,EF以超出水面5倍的速度吹出亞音速。
我已經剝離了下來,刪除了變更跟蹤,國外屬性,導航屬性,一切都下到了poco。
EF執行一個簡單的選擇1M行約4.8,亞音速的LINQ正在5X是...
看SQL事件探查器調用略有不同: 實體框架:SELECT TOP (1000000) [c].[Id] AS [Id], [c].[ProjectIDL] AS [ProjectIDL], [c].[DescriptorIDL] AS [DescriptorIDL], [c].[FieldIDL] AS [FieldIDL], [c].[Data] AS [Data], [c].[OptionId] AS [OptionId] FROM [dbo].[DescriptorFieldValues] AS [c]
亞音速: SELECT TOP (1000000) [t0].[Data], [t0].[DescriptorIDL], [t0].[FieldIDL], [t0].[Id], [t0].[OptionId], [t0].[ProjectIDL] FROM [dbo].[DescriptorFieldValues] AS t0
SQL事件探查器正在運行一個跟蹤並顯示一個巨大的持續時間差異。
我檢查審覈登錄這兩個查詢之前,他們是相同的......
如果我運行在SQL Management Studio中相同的查詢需要11秒兩個詢問
展望亞音速3.04來源,我無法弄清楚我會在哪裏進行調整以使它與EF匹配,但是這裏的查詢語法是否真的使這種差異變大,還是有一些我不知道的魔法?
感謝您的幫助!
「EF執行約4.8中1M行的簡單選擇,SubSonic Linq取5倍...」至少,我們應該看到這個斷言來自的代碼,以及它觀察到的條件下。我記得閱讀(但無法找到源代碼)SubSonic使用一些動態代碼生成,因此編譯最初可能需要很高的時間成本。另外,問題是,如果在管理工作室中運行11秒鐘,EF如何返回「4.8」中的查詢(4.8,btw?)? – 2011-05-09 20:21:33
我指的是從SQL監視器的時間 - 從SQL Server收到它並處理它到返回結果的時間,至少這是我相信的時間... – JTtheGeek 2011-05-09 21:20:43
您還沒有建立任何實際的作爲比較的基礎,我仍然很困惑你從哪裏得到你的號碼。您是否在說4.8和SQL Server報告的「5x」?如果你問的是性能,它有助於做到非常明確和詳細。沒有更多細節我就再也忍不住了。 – 2011-05-09 21:36:20