تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مقارنة سريعة بين سرعة Entity و ADO.NET و Dapper وايهما اسرع
#1
Dapper vs Entity Framework vs ADO.NET Performance Benchmarking


[صورة مرفقة: Tug-of-War.jpg]


بداية هذا شكل او مخطط قاعدة البيانات المستخدم

[صورة مرفقة: sportsdb_diagram.png]

جدول الرياضات والتي لها العديد من الفرق الرياضية وكل فريق له العديد من الاعبين

في الاختبار هذا سوف نستعلم عن عدد الرياضات وعدد الفرق وعدد اللاعبين

الكود المستخدم للـ Entinty 

PHP كود :
public class EntityFramework ITestSignature
{
 
   public long GetPlayerByID(int id)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SportContext context = new SportContext())
 
       {
 
           var player context.Players.Where(=> x.Id == id).First();
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetPlayersForTeam(int teamId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SportContext context = new SportContext())
 
       {
 
           var players context.Players.Where(=> x.TeamId == teamId).ToList();
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetTeamsForSport(int sportId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SportContext context = new SportContext())
 
       {
 
           var players context.Teams.Include(x=>x.Players).Where(=> x.SportId == sportId).ToList();
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }




الكود المستخدم للـ ADO.net


PHP كود :
public class ADONET ITestSignature
{
 
   public long GetPlayerByID(int id)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using(SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           using(SqlDataAdapter adapter = new SqlDataAdapter("SELECT Id, FirstName, LastName, DateOfBirth, TeamId FROM Player WHERE Id = @ID"conn))
 
           {
 
               adapter.SelectCommand.Parameters.Add(new SqlParameter("@ID"id));
 
               DataTable table = new DataTable();
 
               adapter.Fill(table);
 
           }
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetPlayersForTeam(int teamId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using(SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           using(SqlDataAdapter adapter = new SqlDataAdapter("SELECT Id, FirstName, LastName, DateOfBirth, TeamId FROM Player WHERE TeamId = @ID"conn))
 
           {
 
               adapter.SelectCommand.Parameters.Add(new SqlParameter("@ID"teamId));
 
               DataTable table = new DataTable();
 
               adapter.Fill(table);
 
           }
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetTeamsForSport(int sportId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using(SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           using(SqlDataAdapter adapter = new SqlDataAdapter("SELECT p.Id, p.FirstName, p.LastName, p.DateOfBirth, p.TeamId, t.Id as TeamId, t.Name, t.SportId FROM Player p INNER JOIN Team t ON p.TeamId = t.Id WHERE t.SportId = @ID"conn))
 
           {
 
               adapter.SelectCommand.Parameters.Add(new SqlParameter("@ID"sportId));
 
               DataTable table = new DataTable();
 
               adapter.Fill(table);
 
           }
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }


الكود المستخدم للـ Dapeer

PHP كود :
public class Dapper ITestSignature
{
 
   public long GetPlayerByID(int id)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           var player conn.Query<PlayerDTO>("SELECT Id, FirstName, LastName, DateOfBirth, TeamId FROM Player WHERE Id = @ID", new{ ID id});
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetPlayersForTeam(int teamId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           var players conn.Query<List<PlayerDTO>>("SELECT Id, FirstName, LastName, DateOfBirth, TeamId FROM Player WHERE TeamId = @ID", new { ID teamId });
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }

 
   public long GetTeamsForSport(int sportId)
 
   {
 
       Stopwatch watch = new Stopwatch();
 
       watch.Start();
 
       using (SqlConnection conn = new SqlConnection(Constants.ConnectionString))
 
       {
 
           conn.Open();
 
           var players conn.Query<PlayerDTOTeamDTOPlayerDTO>("SELECT p.Id, p.FirstName, p.LastName, p.DateOfBirth, p.TeamId, t.Id as TeamId, t.Name, t.SportId FROM Team t "
 
               "INNER JOIN Player p ON t.Id = p.TeamId WHERE t.SportId = @ID", (playerteam) => { return player; }, splitOn"TeamId"param: new { ID sportId });
 
       }
 
       watch.Stop();
 
       return watch.ElapsedMilliseconds;
 
   }


الاختبار كان لعشرة مرات  يحتوي كل منها على 8 رياضات ، و 30 فريقًا في كل رياضة ، و 100 لاعب لكل فريق

النتائج



[صورة مرفقة: 9e47336700c36dd.jpg]


[صورة مرفقة: 211a9aa89b842ed.jpg]




[صورة مرفقة: 0076c68b697dbab.jpg]

التحليل 

ان Entity Framework كان بطئ مقارنة بي Ado.net وكذلك Dapeer 
بينما تفوق Ado.net في حالة وتفوق عليه Daperr في حالتين وكانوا متقاربين نوعا ما .

اذا Dapeer اسرع من EF بدون شك واسرع قليلا من Ado.net من وجهة نظري الاختيار بينهم يتبقى في ما الذي ترتاح له انت اقصد بين Dapeer و Ado.net
الرد }}}


الردود في هذا الموضوع
مقارنة سريعة بين سرعة Entity و ADO.NET و Dapper وايهما اسرع - بواسطة viv - 13-05-18, 11:28 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  #c و vb جداول مقارنة صبحي نادر 4 5,644 22-08-21, 10:53 AM
آخر رد: Miloud
  Create ADO Entity Data Model Abu Ehab 4 5,786 12-07-21, 03:16 PM
آخر رد: devante.celvin
  Dapper Code Builder Sample khodor1985 3 4,537 18-03-21, 12:39 AM
آخر رد: bfdnfh
  Entity Framework Code First Abu Ehab 1 2,879 10-06-17, 03:39 PM
آخر رد: sendbad100
  How To Work With Entity Modle Abu Ehab 1 3,173 14-03-17, 02:29 AM
آخر رد: Abu Ehab
  Entity Framework Tutorial Abu Ehab 0 2,597 20-01-17, 10:42 AM
آخر رد: Abu Ehab
  نبذة سريعة مع مثال عن Thread oneyemenweb2 0 2,768 19-11-12, 05:48 PM
آخر رد: oneyemenweb2

التنقل السريع :


يقوم بقرائة الموضوع: