SORU
9 Temmuz 2009, PERŞEMBE


ToList aramak daha mı() ya da ToArray() ETMENİZ sorgular?

Ben de sık sık ilan ediyorum nerede bir sorgu değil mi eval düşündüğüm durum içine çalıştırmak. Bu birden çok kez yinelemek istiyorum, çünkü genelliklevepahalı hesaplamak için. Örneğin:

string raw = "...";
var lines = (from l in raw.Split('\n')
             let ll = l.Trim()
             where !string.IsNullOrEmpty(ll)
             select ll).ToList();

Bu gayet iyi çalışıyor.Amaeğer sonucu değiştirmek için gidiyorum eğer değilse, o zaman da ToArray() yerine ToList() arayabilirim.

ToArray ancak acaba() ilk ToList çağırarak uygulanır() ve sadece ToList aramaktan daha bu nedenle daha az verimli bellek().

Ben deli miyim? Sadece bellek ayrılmış iki kez olmayacak ToArray() - güvenli ve bilginin güvenli çağırayım mı?

CEVAP
9 Temmuz 2009, PERŞEMBE


Performans farkı List<T> dinamik olarak dizi boy olarak uygulanır beri önemsiz olacaktır. Arama da ToArray() (kullandığı bir iç Buffer<T> sınıfa büyümek dizi) ToList() (çağrı List<T>(IEnumerable<T>) kurucu) sona erecek olan bir madde koyarak onları bir diziye ve büyüyen dizi kadar uyuyor hepsini.

Eğer bu gerçeği teyit beton arzu ederseniz, hemen hemen aynı kod için aşağı kaynatın göreceksiniz Reflektör -- söz konusu yöntemlerin uygulanmasını kontrol.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • Christian Atlas

    Christian At

    26 Mart 2009
  • theavettbrothers

    theavettbrot

    9 ŞUBAT 2007