首页 > 代码库 > 一个Demo让你意识到数据结构的重要性

一个Demo让你意识到数据结构的重要性

1.首先我们做一个简单的测试,创建一个十万次的for循环,循环过程中判断当前i值是否在list集合中,如果不在,就将其加入到集合中去。通过结果我们可以看到一个如此简单的逻辑耗时竟然高达95634毫秒,将近100秒的时间。

            Stopwatch sw = new Stopwatch();            sw.Start();            List<string> list = new List<string>();            for (int i = 0; i < 100000; i++)            {                if (!list.Contains(i.ToString()))                {                    list.Add(i.ToString());                }            }            Console.WriteLine(sw.ElapsedMilliseconds);            Console.ReadKey();

技术分享

2.我们将List集合改为HashSet,将循环次数修改为循环一百万次,发现结果不过是1195毫秒,性能得到了显著地提升。

           Stopwatch sw = new Stopwatch();            sw.Start();            HashSet<string> hashSet = new HashSet<string>();            for (int i = 0; i < 1000000; i++)            {                if (!hashSet.Contains(i.ToString()))//如果当前i值不在hashSet集合中                {                    hashSet.Add(i.ToString());//将当前i值添加到该集合中去                }            }            Console.WriteLine(sw.ElapsedMilliseconds);            Console.ReadKey();

技术分享

3.我们将List集合改为Dictionary<string,string>,将循环次数修改为循环一百万次,发现结果不过是1753毫秒,性能同样得到了显著地提升。

            Stopwatch sw = new Stopwatch();            sw.Start();            Dictionary<string,string> dic =new  Dictionary<string, string>();            for (int i = 0; i < 1000000; i++)            {                if (!dic.ContainsKey(i.ToString()))//如果当前i值不在字典中                {                    dic.Add(i.ToString(),i.ToString());//将当前i值添加到该字典中去                }            }            Console.WriteLine(sw.ElapsedMilliseconds);            Console.ReadKey();

技术分享

4.睡觉。未完待续。。。。。

一个Demo让你意识到数据结构的重要性