標籤: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的對比