zoukankan      html  css  js  c++  java
  • 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操作数组转集合的效率比遍历操作的效率高出很多,当然当数据溢出内存时,这种方法就不能通用了。

  • 相关阅读:
    杭电2042
    杭电2041
    杭电2040
    杭电2046
    SPOJ
    SPOJ
    SPOJ
    HDU
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/shuonar/p/3125976.html
Copyright © 2011-2022 走看看