本文的轉載地址: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;
}
注意,數組裡面的內容放多點,這樣才看得出效果。
首先,我們看下使用linq的ToList<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");
在我的電腦裡面測試的結果是:Linq:124ms
其次,我們使用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");
在我的電腦裡面測試的結果是:For:920ms
最後,我們使用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");
在我的電腦裡面測試的結果是:foreach:998ms
通過這三種方法,最終我們瞭解到linq運算元組轉集合的效率比遍曆操作的效率高出很多,當然當資料溢出記憶體時,這種方法就不能通用了。