İçeriğe geç

Performanslı Olarak LinqToSql Kullanmak (Compiled Queries)

LinqToSql özellikle karmaşık sql sorgulamaları yaparken sağladığı kolaylık ile insanı cezbediyor ama performasının kötü olması kullanmaya engel olan bir faktör. Bu noktada önbellekleme (caching) yaparak bu sorunun üstesinden gelebiliriz. Northwind üzerinden bir deneme yapalım.

public partial class NorthwindDataContext
{
 public static Func<NorthwindDataContext, int, IQueryable<Product>>
 ProductsByCategoryID = CompiledQuery.Compile
 ((NorthwindDataContext context, int categoryID) =>
 context.Products.Where(p => p.CategoryID == categoryID));

 public IQueryable<Product> GetProductsByCategoryIDFast(int                                                        categoryID)
 {
 return ProductsByCategoryID(this, categoryID);
 }
}

Önbellekleme yapmadığımızda her defasında sorgu yeniden çalışmakta ve süre kaybı yaşanmakta ama bu sayede gözle görülür bir performans sağlıyoruz. Benim makinamda test ettiğimde aşağıdaki gibi bir sonuç çıktı.

Sorgu Sayısı Normal CompiledQuery
10 8 3
100 84 20
1000 818 192
10000 8820 1909
Tarih:Linq

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.