C 陣列和集合互相轉換的幾種方法的效率分析

2022-07-30 09:12:11 字數 1458 閱讀 2201

在很多時候,我們需要將list集合轉換為陣列,或者陣列轉換為list,我今天測試了一下將資料轉換為list的三種方法的效率,我們驗證下面這個陣列:

inttestarray = new int[100000000];

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

testarray[i] = i;

注意,陣列裡面的內容放多點,這樣才看得出效果。

首先,我們看下使用linq的tolist(),這個需要新增usingsystem.linq;

///第一種:linq

datetime starttime = datetime.now;

listlist = testarray.tolist();

datetime endtime = datetime.now;

timespan ts = endtime - starttime;

console.writeline("linq: " + ts.milliseconds +"ms");

在我的計算機裡面測試的結果是:linq:124ms

其次,我們使用for迴圈遍歷陣列,然後把陣列裡面的值賦值給乙個已經申明好的list集合:

///第二種:for迴圈

listtestdata = new list();

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迴圈

listforeachdata = new list();

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運算元組轉集合的效率比遍歷操作的效率高出很多,當然當資料溢位記憶體時,這種方法就不能通用了。

Int 和 String 互相轉換的多種方法

int 和 string 互相轉換的多種方法 1 如何將字串 string 轉換成整數 int?a.有兩個方法 1 int i integer.parseint string 或 i integer.parseint string int radix 2 int i integer.valueof ...

int 和 String 互相轉換的多種方法

1 如何將字串 string 轉換成整數 int?a.有兩個方法 1 int i integer.parseint string 或 i integer.parseint string int radix 2 int i integer.valueof my str intvalue 注 字串轉成 ...

int 和 String 互相轉換的多種方法

1 如何將字串 string 轉換成整數 int?a.有兩個方法 1 int i integer.parseint string 或 i integer.parseint string int radix 2 int i integer.valueof my str intvalue 注 字串轉成 ...