Hıza ulaşmak için Linq standardını daha hızlı ve kurban etmeliyim (Sözlük arama gerçekten hızlı mı olduğu varsayılıyor)? Bu yüzden bana ayrıntılı bakalım:Sözlük Lookup (O (1)) vs Linq nerede
Ben şu var:
List<Product> products = GetProductList();
Ben örneğin, bazı niteliğe dayalı olarak bir ürüne aramak için ihtiyaç, seri numarası var. Önce bir sözlük oluşturmak ve sonra aşağıdaki gibi doldurmak olabilir:
Dictionary<string, Product> dict = new Dictionary<string, Product>();
foreach(Product p in products)
{
dict.Add(p.serial, p);
}
bu bir ürünü bulmak O yararlanmak zamanı
(1) Sözlük görünüm-up tarafından sunulan:string some_serial = ...;
try { Product p = dict[some_serial]; } catch(KeyNotFoundException) { }
Entities kullanarak Alternatif
:
Dict yaklaşımla dezavantajı elbetteProduct p = products.Where(p => p.serial.Equals(some_serial)).FirstOrDefault();
bu (bu en tartışmalı olsa da) daha vb hafızada, yazmak için daha fazla kod, daha düşük nitelikte bir gerektirir. Faktör dışı olduğunu varsayalım. İlk yaklaşımı almalı mıyım? Sonuç olarak, yukarıdaki Linq yaklaşımının karmaşıklığının gerçekten O (n) olup olmadığını ve bunun nasıl daha iyi olabileceğini görmüyor mu diye onaylamak isterim.
Evet, sözlüğe eklemenin ek yükünü dikkate almayı unuttum. Teşekkürler. –
Ancak, sözlüğü birçok kez (yani 100 kez) kullanırsam, sadece bir kez değil? –