Apakah Linq to SQL lebih cepat daripada Linq to Entities?

Saya sedang berdiskusi dengan rekan saya. Kami menggunakan Linq to Sql di tempat kerja dan saya agak baru dalam pekerjaan itu, jadi saya bertanya kepadanya mengapa kami tidak menggunakan Linq to Entities? Dia membuat beberapa argumen dan salah satunya adalah "Karena Linq to Entities lebih lambat dari linq to Sql". Saya agak skeptis tentang hal ini, saya tahu bahwa Linq to Entities lebih kompleks dan memiliki fitur tambahan tetapi saya tidak mengerti mengapa ini lebih lambat.

Apakah Linq ke Entitas lebih lambat? Apa tanggapan yang baik terhadap argumen seperti itu?


person NomenNescio    schedule 15.11.2011    source sumber
comment
Minta rekan Anda untuk menunjukkan tolok ukurnya.   -  person Oded    schedule 16.11.2011
comment
Tergantung! - seperti biasa :-) Linq-to-SQL adalah pemetaan satu lapisan yang cukup sederhana - tabel menjadi kelas di .NET. Entity Framework jauh lebih canggih, Anda dapat memetakan beberapa tabel ke satu kelas. Jadi untuk skenario yang mudah: ya, Linq-to-SQL pasti akan menjadi sedikit lebih cepat. TAPI: EF (setidaknya di v4) memungkinkan integrasi prosedur tersimpan yang sangat bagus, yang lagi-lagi dapat meningkatkan kinerja Anda sedikit - L2S agak berantakan dan kikuk dengan sprocs... jadi itu mungkin nilai tambah untuk EF4 lagi....   -  person marc_s    schedule 16.11.2011
comment
Selain itu, saya yakin SQL yang dihasilkan oleh EF4 seringkali lebih matang dan mungkin sedikit lebih cepat daripada pernyataan SQL tertentu yang dihasilkan oleh Linq-to-SQL. Namun perbedaannya mungkin jarang terjadi dan hanya terjadi pada kasus penggunaan tertentu.....   -  person marc_s    schedule 16.11.2011


Jawaban (2)


Hal ini kemungkinan disebabkan oleh masalah kinerja pada versi awal Entity Framework.

Dalam rilis sebelumnya, ada beberapa masalah dengan kueri yang diterjemahkan dengan buruk di Entity Framework. Rilis selanjutnya mengatasi banyak masalah ini, jadi sekarang saya berpendapat bahwa kinerjanya mungkin sama atau lebih baik.

Meskipun demikian, hal ini sangat bergantung pada apa yang Anda uji - tolok ukur dan pembuatan profil adalah satu-satunya cara untuk mengetahuinya. Linq To SQL akan lebih cepat untuk operasi tertentu - tetapi EF juga akan lebih cepat pada operasi lainnya. Meskipun demikian, EF sekarang memberikan lebih banyak peluang untuk mengatasi keterbatasan dan masalah, sehingga kemungkinan besar akan lebih dapat disesuaikan seiring berjalannya waktu.

person Reed Copsey    schedule 15.11.2011
comment
@Steven Meskipun saya setuju bahwa itu adalah alasan yang sangat bagus untuk tidak memilihnya untuk pengembangan baru, hal itu tidak terlalu berdampak pada kinerjanya;) - person Reed Copsey; 16.11.2011
comment
+1. Perlu juga dicatat bahwa versi Entity Framework berikutnya berjanji untuk menyimpan kueri dalam cache secara otomatis, yang kemungkinan akan memberikan peningkatan kinerja yang signifikan dibandingkan versi saat ini dan LINQ ke SQL. - person StriplingWarrior; 16.11.2011

Dalam hal kinerja murni, LINq To SQL seharusnya sedikit lebih cepat karena menggunakan pemetaan satu lapisan sementara Linq to Entities memiliki dua lapisan pemetaan dan pemetaan tambahan dapat menimbulkan biaya kinerja.

Namun Anda harus melakukan beberapa tolok ukur dalam konteks pemanfaatan Anda sendiri karena perbedaan kinerja sering kali tidak diperhatikan...

person aleroot    schedule 15.11.2011