首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

LINQ to SQL Select 性能實測:CompiledQuery 是關鍵

     編輯:關於.NET

針對 LINQ to SQL 性能質疑,以 Northwind Products 表(3000 行)為例,測試主鍵單行查詢 3000 次。

測試結果對比

方式耗時備註
SqlDataReader (手寫 SQL)0.65 秒基準線
LINQ to SQL (原始 Lambda)21.2 秒每次構建 Expression 樹
LINQ to SQL (共享連接)~21 秒連接池使優化無效
LINQ to SQL (CompiledQuery)~1 秒預編譯查詢計劃

關鍵代碼


// 原始:每次查詢重新構建表達式樹
var product = ctx.Products.Single(p => p.ProductID == i);

// 優化:預編譯
var query = CompiledQuery.Compile((NorthwindDataContext nw, int id) =>
    nw.Products.Single(p => p.ProductID == id));

// 循環中調用
for (int i = 1; i <= 3000; i++)
    var product = query(ctx, i);

結論

  • 原始 LINQ 構建 Expression 與 Func 開銷極大,CompiledQuery 必須用於熱路徑。
  • 優化後性能逼近手寫 ADO.NET,完全可接受。
  • 測試環境:P4 2.8G / 2G RAM / Win2003 / SQL 2005。
感謝社區網友 jyk、Adrian、jjx 指出 Lambda 表達式開銷問題,驗證 CompiledQuery 效果顯著。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved