List和Dictionary的Contains方法性能比较

List list = new List(); Dictionary dictionary = new Dictionary(); int count = 100000; for (int i = 0; i < count; i++) { list.Add(i); dictionary.Add(i, i); } Stopwatch sw = Stopwatch.StartNew(); for (int i = 0; i < count; i++) { bool bl = list.Contains(i); } sw.Stop(); Console.WriteLine(sw.Elapsed.TotalSeconds); sw = Stopwatch.StartNew(); for (int i = 0; i < count; i++) { bool bl = dictionary.ContainsKey(i); } sw.Stop(); Console.WriteLine(sw.Elapsed.TotalSeconds); Console.Read();

 

输出:

24.6726016
0.0036283

可以看出List对于查询是没有优化的。

看一下MSDN对Dictionory的描述:

Dictionary 泛型类提供了从一组键到一组值的映射。字典中的每个添加项都由一个值及其相关联的键组成。通过键来检索值的速度是非常快的,接近于 O(1),这是因为 Dictionary 类是作为一个哈希表来实现的。

你可能感兴趣的:(.Net)