どちらがより良いパフォーマンスを提供しますか?ADO.NETまたはEntityFramework。
これらは私が分析したい2つの方法です。
ADO.NETテストメソッド
public void ADOTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
using (SqlConnection con = new SqlConnection(connection))
{
string Query = "select * from Product ";
SqlDataAdapter da = new SqlDataAdapter(Query, con);
DataSet ds = new DataSet();
con.Open();
da.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
}
stopwatch.Stop();
Console.WriteLine("ADO.NET Time Elapsed={0}", stopwatch.Elapsed);
}
EntityFrameworkのテスト方法
public void EFTest()
{
Stopwatch stopwatch = Stopwatch.StartNew();
var list = _OnlineStoreEntities.Products.ToList();
stopwatch.Stop();
Console.WriteLine("Entity Framework Elapsed={0}", stopwatch.Elapsed);
}
初めて実行する結果
上記のメソッドを100回以上実行したとき。平均実行時間は画像に示されています:
エンティティフレームワークに4ミリ秒以上かかったかどうかにかかわらず、ADO.NETには2ミリ秒しかかかりませんでした。
2回目の実行になります
このメソッドを1回の実行で何度も実行したとき。ADO.NETとEFの間の平均実行時間はそれほど長くありません。
質問
- EFは、初回実行時に非常に悪いパフォーマンスを示すと思います。では、なぜEFを使用するのでしょうか。
- EFの2回目の実行が1回目の実行よりも速かったのはなぜですか?