程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> [技術相關]List、Dictionary轉Dictionary的性能分析

[技術相關]List、Dictionary轉Dictionary的性能分析

編輯:C#入門知識

1.    背景

  我們經常有對List和Dictionary列表進行復制、轉換等操作,在數據量較少時(幾萬以內)各種轉換速度不會被覺察,但是數據量很大時(百萬左右),各種轉換方式的性能就會體現出來。

  本文檔將對列表轉換效率進行測試,最終得出效率較高的方法,指導今後軟件開發對技術的選擇。另外,本文還將對列表轉換過程中由另一線程修改列表數據時,是否會出現異常進行確認。

  2013年5月16日星期四

2.    結論

  1、在Dictionary轉Dictionary過程中由另一線程修改列表數據時,會出現異常。

  2、采用Dictionary.ToDictionary()的方式速度很慢,100萬條需要249毫秒

  3、采用Dictionary.Value.ToList的方式速度很快,100萬條數據僅32毫秒;

  4、List.ToDictionary的方式速度需要109毫秒;

3.    環境

  1)開發環境采用VS2008,C#程序,手動編寫代碼實現。

  2)測試列表中包含100萬條數據。

4.    分析

4.1.  過程1:修改列表,是否對轉換造成異常

  1、方法:用兩個線程,一個線程負責Dictionary轉換,一個對列表進行修改。

      結果:系統報錯,確實會出現異常。

  2、詳細說明(詳情參見下方源代碼)

     用線程函數TH_DicTest0()進行轉換操作,用線程函數TH_DicTest1()進行列表內容修改操作。

4.2.  過程2:列表轉換速度分析

  1、方法1:采用Dictionary.ToDictionary()的方式,

    結果:16:44:08 標識:[ToDic時間] 運行時間為:249; 運行次數:1

  2、方法2:采用Dictionary.Value.ToList,然後再List.ToDictionary的方式進行轉換;

    結果:

    1)Dictionary.Value.ToList的方式用時:

      16:44:08 標識:[ToList時間] 運行時間為:32; 運行次數:1

    2)List.ToDictionary的方式用時:

      16:44:08 標識:[轉Dic時間] 運行時間為:109; 運行次數:1

 

View Code

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved