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
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
Neden bu liste hesaplamak daha yavaş h...
Neden küçük bir liste daha küçük bir d...
Bir liste olup olmadığını Test Clojure...
Liste değerlendirin.JSTL dize içerir...
Bir Liste olmadığını kontrol etmek içi...