c# Dictionary跟Hashtable的對比

來源:互聯網
上載者:User

標籤:style   io   ar   使用   sp   on   cti   時間   bs   

c#裡不支援動態對象, 無法像AS3一樣定義一個動態對象, 添加動態屬性。 

例如像AS3裡  要傳遞一系列參數, 臨時對象的話,通常會用

var o:Object = {id:"1",name:"aaa"};

 

在c#裡,字典系統的構建之前已經試用了Dictionary來充當參數的臨時載體, 但是看了itween的外掛程式後, 使用的是Hashtable來充當。

於是對 Dictionary 跟 Hashtable 2者進行了實驗。 時間以ms為單位。

對比1: 構建對象。

迴圈100k次,每次迴圈分別以Dictionary,Hashtable構建一個臨時對象。

3個參數:180:210

6個參數:219:302

9個參數:252:366

小結: 構建Dictionary比Hashtable會稍微快一些, 但是Dictionary是string類型, 真實情況中如果需要轉類型, 消耗時間可能會比Hashtable更高。

 

對比2:遍曆對象。

迴圈100k次, 遍曆所有屬性。

以6個參數為條件:  Dictionary耗時74, Hashtable耗時200.

小結: 遍曆Dictionary比Hashtable快不少, 而且Hashtable遍曆時是object類型,如果是使用在語言套件參數裡, 還要考慮轉為字串的消耗。

 

對比3:尋找。

2者都是平均是7~10ms 相差無幾。

 

總結:

  Dictionary雖然內部實現也是HashTable 但是運行中Dictionary效率還是更高一些。項目運行中效率應該不會相差很大。

  Dictionary適合用於語言套件的配置, 因為它的類型是確定的, 不需要再轉一次, 效率也比Hashtable高。

 

  Hashtable的key value都是object, 如果是用來做字典系統時充當臨時對象比較合適,但是也必須是二進位還原序列化為對象時,如果是解析CSV等文本時還是試用Dictionary比較好。

 

c# Dictionary跟Hashtable的對比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.