[英]A quick test shows big difference comparing EF core to ADO.Net
我讀到 EF 核心性能得到了改進,幾乎與 ADO.NET 一樣快,因此決定創建一個簡單的測試。 我得到的結果,顯示出巨大的差異。 ADO.NET 快了 10 倍。
我在這里發布了我用來測試的代碼。 我的測試有問題嗎? 采取的步驟:
使用 Scaffold-DbContext 對數據庫進行逆向工程。 從一張表中獲取一條記錄:
using (var db = new TestFECore.Models.AchieveDB_EncryptContext())
{
var watch = System.Diagnostics.Stopwatch.StartNew();
var disbursement = db.Disbursement
.Where(c => c.CashOutid > 999 && c.CashOutid < 2001)
.First();
Console.WriteLine(disbursement.DisbursementId.ToString());
watch.Stop();
var elapsedMs = watch.ElapsedMilliseconds;
Console.WriteLine("Time elapsed:" + elapsedMs.ToString());
var dis = new TestFECore.Models.Disbursement();
var ds = new DataService();
watch = System.Diagnostics.Stopwatch.StartNew();
dis = ds.GetDisbursements();
Console.WriteLine("Cashoutid from regular ado.net " + dis.DisbursementId.ToString());
watch.Stop();
elapsedMs = watch.ElapsedMilliseconds;
}
這是 GetDisbursements 代碼
public Models.Disbursement GetDisbursements()
// public List<Models.Disbursement> GetDisbursements()
{
Models.Disbursement disbursement = new Models.Disbursement();
using (System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=*******; etc"))
{
string commandString = @" The exact SQL created by the EF ";
SqlCommand command =
new SqlCommand(commandString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
disbursement.DisbursementId = (int)reader["DisbursementId"];
}
reader.Close();
}
return disbursement;
}
結果如下:
Core 3.0 Testing!
Querying Disbursments
1498
Time elapsed:2138
Using regular ado.net
Cashoutid from regular ado.net 1498
Time elapsed:144
Press enter to continue...
我的比較哪里錯了? 謝謝
根據 TheGenral “第一次調用 dbContext”的評論,我在比較之前向另一個表添加了一個查詢,現在我得到了足夠接近的結果。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.