14

L2S ve EF'yi karşılaştıran ve EF'in yayımlanan sürümünü kullanarak test edilen çağrılan çağrıları bulamayan en yeni performans kriterlerini araştırıyorum. Bu yüzden, kendi testlerimden bazılarını araştırdım ve bazı ilginç sonuçlar buldum.Linq To Sql vs Entity Framework Performansı

Bu sonuçlar doğru görünüyor mu? Bunu farklı bir şekilde test etmeli miyim?

bağlamda, sproc biri çağrı bir örneği: (ölü link) bağlamın

Bir örnek, aynı sproc birden aramalar: (ölü link)

birden çok örneği arasında Bağlam, aynı sproc'in birden fazla çağrısı: (ölü bağlantı)

+0

ne olur? Bu uzun süreli aramalar, havuzda bir bağlantı bulunmayan sistemden kaynaklanıyor olabilir mi? –

+2

Ayrıca, güncellemeyi karşılaştırmak, silmek ve performans eklemek isteyebilirsiniz. – DamienG

+0

Veri kodunuz genelde böyle görünüyor mu? Her nasılsa gerçek veri erişim kodu gibi görünmüyor ... Döngüleri test etmek, gerçek veri erişim kalıplarının neye benzediğine dair hiçbir ortak noktaya sahip değildir. –

cevap

7

startup costs vs. execution costs'u ayırt etmek için bunu biraz farklı bir şekilde test etmeniz gerektiğini düşünüyorum. Özellikle Varlık Çerçevesi, startup costs resulting from the need to compile database views numaralı önemli bilgilere sahiptir (bunu önceden yapabilirsiniz). Benzer şekilde, LINQ, bir sorguyu birden çok kez çalıştırıyorsa uygun olan bir compiled query nosyonuna sahiptir.

Birçok uygulama için, sorgu çalıştırma maliyetleri başlangıç ​​maliyetlerinden daha önemlidir. Bazıları için bunun tersi doğru olabilir. Bunların performans özellikleri farklı olduğundan, bunları ayırt etmenin önemli olduğunu düşünüyorum. Özellikle, başlangıç ​​maliyetlerinin tekrar tekrar yürütülen bir sorgulamanın ortalama maliyetine ortalaması yanıltıcıdır.

+0

Ancak bu sonuçlar, bir asp.net uygulamasında işlerin nasıl çalışacağını yansıtmaz mı? Bir örneği gerçekten bağlamamıyorum çünkü 'canlı' her istekte yeni bir tane yapmalı ve saklı yordamı çağırmalıyım. – Vyrotek

+0

Hayır, zorunlu olarak değil.Varlık Çerçevesi görünümlerini önbelleğe alabilirsiniz; bu durumda, içeriği başlatırken bu maliyeti ödemezsiniz. Önceden derlenemeyen şeyler için bile, bu öğeleri ayrı ayrı izleyerek, bir sorguyu yapan bir sorgu ile 100. –

2

Daha iyi performans göstermeye çalışan birkaç test asp.net sayfası yaptım.

10.000 kayıtları Düzenleme 10,000 kayıtları databind ben LinqToSQL daha hızlı olması için bekliyordum sayfa

bir GridView ve ekrana 10.000 kayıtları yerleştirin 10.000 kayıtlarını silin ancak yukarıdaki LinqToSQL yapıyor neredeyse alır: My testti LinqToEntities 2 saniyeden az sürüyor.

Bu test için en azından LinqToEntities daha hızlı görünüyor. Sonuçlarım da sizinkiyle eşleşiyor.

Birleştirilmiş olsa da, 1'den fazla tabloyu Ekleme/Düzenleme/Silme/Gösterme'yi denemedim.

Daha fazla bilgi edinmek isterim ... ya da testim geçerli bir test değilse, bazı gerçek testleri görmek isterim. Bu, LINQ to SQL ve Entity Framework arasındaki performansın güzel bir ölçümü gibi gözüküyor.

+1

arasındaki eski bir gönderi olduğunu anlıyorum. Burada bulunan EF ile testler (http://blog.staticvoid.co.nz/2012/03/entity-framework-comparative.html). L2S'yi güncellemede daha yavaş buldum ama nedenini (ve bunu geliştirmek için bir yol varsa) bilmek isterim. L2S, Seçimler'de –

+0

Nice işinde çok daha hızlıydı. Veritabanlarında ve ORM'lerde uzman değilim, ama testlerin neler gösterdiğini beğeniyorum. Son zamanlarda, ADO.net ekibinden EF5 geliştirmeleriyle ilgili bir makale okudum: http://blogs.msdn.com/b/adonet/archive/2012/02/14/sneak-preview-entity-framework-5-0- performans-improvements.aspx – dtc

+0

teşekkürler, evet EF ekibi, son zamanlarda performansın etrafında oldukça hoş şeyler yaptı, ilginç bir şekilde, çoğu net bir şekilde verirken EF ikili dosyaları değil, dot net 4.5 içinde yapılmış gibi görünüyor. farklı teknoloji bir destek. –