C#数组和集合互相转换的几种方法的效率分析

本文的转载地址:http://www.shuonar.com/blog/6499c306-7f2d-45b2-8f43-577280ab99cd.html

在很多时候,我们需要将list集合转换为数组,或者数组转换为list,我今天测试了一下将数据转换为list的三种方法的效率,我们验证下面这个数组:

                            int[]testArray = new int[100000000];

           for (int i = 0; i < 100000000; i++)

           {

                testArray[i] = i;

           }

         注意,数组里面的内容放多点,这样才看得出效果。

首先,我们看下使用linqToList<T>(),这个需要添加usingSystem.Linq;

           ///第一种:Linq

           DateTime startTime = DateTime.Now;

           List<int> list = testArray.ToList<int>();

           DateTime endTime = DateTime.Now;

           TimeSpan ts = endTime - startTime;

           Console.WriteLine("Linq: " + ts.Milliseconds +"ms");

在我的计算机里面测试的结果是:Linq124ms

         其次,我们使用for循环遍历数组,然后把数组里面的值赋值给一个已经申明好的list集合:

 

           ///第二种:for循环

           List<int> testData = new List<int>();

           DateTime startFor = DateTime.Now;

           for (int i = 0; i < testArray.Length; i++)

           {

                testData.Add(testArray[i]);

           }

           DateTime endFor = DateTime.Now;

           TimeSpan tsFor = endFor - startFor;

           Console.WriteLine("For :" + tsFor.Milliseconds +"ms");

在我的计算机里面测试的结果是:For920ms

         最后,我们使用foreach循环遍历数组,同样把数组里面的值赋值给一个已经申明好的list集合:

           ///第三种:foreach循环

           List<int> foreachData = new List<int>();

           DateTime foreachstart = DateTime.Now;

           foreach (int i in testArray)

           {

                foreachData.Add(i);

           }

           DateTime foreachend = DateTime.Now;

           TimeSpan tsforeach = foreachend - foreachstart;

           Console.WriteLine("foreach :" + tsforeach.Milliseconds +"ms");

在我的计算机里面测试的结果是:foreach998ms

 

通过这三种方法,最终我们了解到linq操作数组转集合的效率比遍历操作的效率高出很多,当然当数据溢出内存时,这种方法就不能通用了。

 

 

posted @ 2013-06-08 11:40  shenyuc  阅读(846)  评论(0编辑  收藏  举报