C# 中 for和foreach 效能比較,提高編程效能

來源:互聯網
上載者:User

標籤:

 

foreach唯讀,for可寫的!我覺得這是它們最主要的區別.
foreach最主要的優勢是不需要知道集合內的元素個數,可以很方便的遍曆每個元素.

在很多情況下for和foreach具有同樣的功能,選擇for還是foreach很多人可能都是看自己的喜好,本測試試圖通過 來真是測試資料來比較他們的執行效率。希望能給大家對他們的時候帶來一些協助。
測試環境: 
    硬體環境:   PIII800 + CPU456
    軟體環境:   VisualStudio.Net  + C#
測試案例:
    利用結果集來存放記錄,初始化對結果集添加記錄
    分別對記錄數為10000,100000,1000000條記錄的時候進行採樣分析
    關鍵測試對比代碼如下,功能完全一樣:
    //foreach開始時間
   datetime3 = System.DateTime.Now.TimeOfDay.ToString();
   foreach(DataRow row in relationData.Tables[RelationData.RELATIONINFO_TABLE].Rows)
buffer = row[RelationData.PK_TABLE_NAME].ToString();
   datetime4 = System.DateTime.Now.TimeOfDay.ToString();
   //for開始時間
   datetime5 = System.DateTime.Now.TimeOfDay.ToString();
   for(int j=0;j<1000000;j++)
         buffer = relationData.Tables[RelationData.RELATIONINFO_TABLE].Rows[j][RelationData.PK_TABLE_NAME].ToString();
   datetime6 = System.DateTime.Now.TimeOfDay.ToString();
測試結果:
   10000條記錄時:
         foreach讀取時間:16:29:34.2577584
         foreach結束時間:16:29:34.2677728
         for讀取開始時間:16:29:34.2677728
         for讀取結束時間:16:29:34.2878016
   100000條記錄時:
         foreach讀取時間:16:31:10.1055808
         foreach結束時間:16:31:10.1957104
         for讀取開始時間:16:31:10.1957104
         for讀取結束時間:16:31:10.4460704
   1000000條記錄時:
         foreach讀取時間:16:33:12.6217504
         foreach結束時間:16:33:13.6332048
         for讀取開始時間:16:33:13.6332048
         for讀取結束時間:16:33:18.7906208
結果分析:
   1)對於10000條記錄可以看出
         foreach用了 0.0100144 
         for迴圈用了0.0300432
         foreach所花的時間正好是for迴圈的 1/3
   2)對於100000條記錄可以看出
         foreach用了0.0901296  
         for迴圈用了0.2503600
         foreach所花的時間是for迴圈的 36%
   3)對於1000000條記錄結果可以看出
         foreach用了1.0114544  
         for迴圈用了4.1574160
         foreach所花的時間是for迴圈的 25%
    通過對這些測試結果的分析,可以看出相對於原來的for語句foreach具有
更好的執行效率,foreach的平均花費時間只有for30%。通過測試結果在for和foreach都可以使用的情況下,我 們推薦使用效率更高的foreach.在測試同時
我們附加的發現,用for寫入資料時間大約是讀取資料時間的10倍左右

轉自:http://www.cnblogs.com/yzxchoice/archive/2007/12/15/995949.html

C# 中 for和foreach 效能比較,提高編程效能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.