程序字典是erlang遊戲開發中最為常用的資料記錄方式,理由很簡單,因為它夠快,差不多比ets快了乙個數量級。但是,程序字典的資料為所在程序私有,無法跨程序直接get到程序字典的資料,而且,在程序被銷毀時,程序字典的資料也會被**。
再說下ets,對比程序字典,ets的適用場景是跨程序讀寫資料。遇到乙個資料頻繁被多個程序讀到,就要考慮使用ets了。另外,ets有歸屬程序,但歸屬程序銷毀時,ets的資料就會被系統**。
對比程序字典和ets的實現,區別如下:
1. 鎖方面,程序字典為無鎖操作,ets是讀寫鎖
2. 資料方面,程序字典資料在程序中,查詢沒有多餘的複製操作;而ets,因為資料不在程序中,查詢時會複製乙份到程序。
所以,程序字典通常是最優先的選擇。假如玩家的資料是儲存在mnesia,特別是玩家的核心資料,就有必要從mnesia讀到放在程序字典中。前面講到了mnesia是利用ets和dets實現的,玩家上線時將核心資料讀到程序字典,這樣,讀寫都在程序字典,就可以利用程序字典帶來的效能提公升。這個提公升是很可觀,畢竟快了乙個數量級。
前面提到了ets歸屬程序銷毀時,ets資料也會被**?
那麼如果預防資料丟失的問題,ets也提供了方法,通過設定繼承者程序就可以了。
ets:new(person, [named_table, ])
當歸屬程序崩潰時,繼承者程序就會收到資訊 ,並且,ets的歸屬權就會轉交到繼承者程序。
python 有序字典與巢狀字典
1.ordereddict 有序字典 ordereddict是dict的子類,它記住了內容新增的順序。而普通字典是無序的。普通字典 import collections d dict d a a d b b d c c for k,v in d.items print k,v a ac c b b有...
字典與集合
一 字典 1 字典 於儲存具有對映關係 key value對 資料的集合。2 對於 name 張三 key就是 name key對應的value是 張三 3 乙個key value對 認為是乙個條目 entry 字典是儲存key value對的容器。二 字典類的特點 1 與陣列不同,字典靠key訪問...
字典與集合
示例 字典 example dict print example dict 77 執行結果 88 print example dict.get 55 執行結果 xx print example dict.get 2222222222 執行結果 none print example dict.get ...