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

  • 相关阅读:
    【HDOJ】1058 Humble Numbers
    activity去标题栏操作&保留高版本主题
    谷歌安卓官方开发者网站 https://developer.android.google.cn
    TortoiseGIT
    Git的优势
    eoe开发社区
    安卓巴士 http://www.apkbus.com/
    Git简介
    SVN标准目录结构
    关于人生的
  • 原文地址:https://www.cnblogs.com/shuonar/p/3125976.html
Copyright © 2011-2022 走看看