2011-06-27 18 views
8

Miniprofiler yükledik. Düzenleyici bir deneyim oldu, ancak şimdi veritabanı sorgularımızın, devredeyken devre dışı kaldığı sürece 3x'i hızlı çalıştırdığını görüyoruz. hızlı ...Miniprofiler: site anlaşılmaz bir şekilde

public static DbConnection GetOpenConnection(string connectionString) 
{ 
    var cnn = new System.Data.SqlClient.SqlConnection(connectionString); 
    // wrap the connection with a profiling connection that tracks timings 
    return MvcMiniProfiler.Data.ProfiledDbConnection.Get(cnn, MiniProfiler.Current); 
} 

Linq2Sql aniden:

bizim app değişen tek kod profiledDbConnection eklemek oldu.

Şikayet etmiyorum, ama bu neden oluyor?

+2

Aklına gelen tek şey, belki de ProfiledDbConnection ekleme sorgusu önbelleğe alınan öğelerin döndürülmesine neden oldu, ancak bu toplam performans tahminini hızlandırıyor ... –

+4

performansın hızlandırılması için yaptığımız hiçbir şey yok, beklenti performans olacak Profil oluşturulduğunda hiç bu kadar yavaş olmayın. Bu isabet sadece kullanıcıların (geliştiriciler) bir kısmını etkilediğinden kabul edilebilir. –

+0

Beklediğim şey bu ... ama gözlemlediğimiz şey bu değil. Ben, biri için, şaşırdım. –

cevap

5

'Veritabanı sorguları 3 kat daha hızlı çalıştır' ile ne demek istiyorsunuz?

  1. SQL Profiler'i çalıştırıyorsanız - db yürütme süresinin 3 kat daha düşük olduğunu görüyor musunuz?
  2. Kodunuzda veritabanını sorgulayan yüksek düzey bir yöntem yürütme zamanı 3 kat daha düşük mü?

Eğer durum 1'den farklı ise, oluşturulan SQL'de olacak - her iki ifadeyi de karşılaştırın. Eğer bir C# profiler (Ants, dotTrace) çalıştırmak ve tüm yöntemlerin yürütme süresini karşılaştırmak daha 2 ise.

Bu büyüklükteki fark, tamamen farklı bir yürütme yolu ile ilgili olacaktır; belki de büyük bir döngü yapmıyorsunuz veya önbellekten veri alıyorsunuzdur.

Her şeyden önce veritabanına isabet ediyorsanız ve sorgu sayısı aynıysa, doğrulayabilirsiniz.