SORU
5 Mayıs 2009, Salı


C#, Liste<T>.() İçerir - çok mu yavaş?

Herkes jenerik kapsayan bir liste neden bana açıklayabilir() işlevi bu kadar yavaş?< / ^ br . Yaklaşık bir milyon sayı ve sürekli bu sayılar içinde belirli bir sayı varsa kontrol kodunu içeren bir Liste var.< / ^ br . Aynı şey Sözlük ve ContainsKey kullanarak yapmaya çalıştım() işlevi, ve Listesine göre yaklaşık 10-20 kat daha hızlı oldu.< / ^ br . Tabii ki, gerçekten bu şekilde kullanılmasına değildi, çünkü bu amaç için Sözlük kullanmak istemiyorum.< / ^ br . Bu yüzden, asıl soru şudur, orada Listesine herhangi bir alternatiftir.() İçerir, ama Sözlük kadar kaçık.() ContainsKey ?< / ^ br . Şimdiden teşekkürler!

CEVAP
5 Mayıs 2009, Salı


Sadece, 1 ** etmek için kontrol ediyorsanız .NET 3.5 en iyi seçenek - sözlük-performans, ama herhangi bir anahtar/değer çifti sadece değerler:

    HashSet<int> data = new HashSet<int>();
    for (int i = 0; i < 1000000; i  )
    {
        data.Add(rand.Next(50000000));
    }
    bool contains = data.Contains(1234567); // etc

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • TheOtherMau5

    TheOtherMau5

    6 Mart 2012
  • Crossover

    Crossover

    18 HAZİRAN 2007