SORU
21 EYLÜL 2011, ÇARŞAMBA


SERİ işlevlerin sırası önemli mi?

Temel olarak, soru olarak Birleşik Devletleri... SERİ işlevleri açısından madde düzeni yokperformans? Belli ki sonuç yine aynı olurdu...

Örnek:

myCollection.OrderBy(item => item.CreatedDate).Where(item => item.Code > 3);
myCollection.Where(item => item.Code > 3).OrderBy(item => item.CreatedDate);

Her ikisi de bana aynı sonuçları döndürür, ama farklı SERİ bir sırada. Yeniden bazı maddeler farklı sonuçlara neden olacağını fark, ve bu konuda endişeli değilim. En büyük endişem, eğer bilerek, aynı sonuçları almak, sipariş etmek ne performansını etkileyebilir. Ve, sadece herhangi bir SERİ aramalar yaptım 2 SERİ çağrıları (Nerede OrderBy), ama.

CEVAP
21 EYLÜL 2011, ÇARŞAMBA


Kullanımda ETMENİZ sağlayıcı bağlıdır. Nesneleri bu SERİ için, bu kesinlikle bir hale getirebilirbüyükfark. Varsayalım aslında var:

var query = myCollection.OrderBy(item => item.CreatedDate)
                        .Where(item => item.Code > 3);

var result = query.Last();

Bu gerektirirtümtoplama sıralanacaksonrasüzülmüş. Eğer bir milyon öğeler olsaydı, tek bir kod daha vardı 3, zaman atılması sonuçlar veren bir sürü israf olurdu.

Ters işlem ile karşılaştırın, ilk filtreleme:

var query = myCollection.Where(item => item.Code > 3)
                        .OrderBy(item => item.CreatedDate);

var result = query.Last();

Bu sefer tek örnek "tek bir öğe filtre" çok daha verimli zaman ve uzay her ikisi de olacak. sadece eşleşen durumunda hangi filtre sonuçları, ısmarlıyoruz

Ayrıcaolabilirsorgu doğru yürütür ya da değil fark yaratır. Düşünün:

var query = myCollection.Where(item => item.Code != 0)
                        .OrderBy(item => 10 / item.Code);

var result = query.Last();

Sorun değil - asla 0 ile bölme olacağımızı biliyoruz. Ama eğer sipariş gerçekleştiriyoruzöncefiltreleme, sorgu, bir özel durum oluşturur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eisleyhead

    eisleyhead

    11 Ocak 2006
  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • UlyssesForever's channel

    UlyssesForev

    28 ŞUBAT 2012